Host skryptów systemu Windows (WSH, Windows Scripting Host)

Transkrypt

Host skryptów systemu Windows (WSH, Windows Scripting Host)
Politechnika Częstochowska
Katedra Inżynierii Komputerowej
Systemy Operacyjne, Studia Dzienne
Windows 2000 , Ćw 6, strona 1
Ćwiczenie nr.6
Host skryptów systemu Windows (WSH, Windows Scripting Host)
WSH służy do tworzenia skryptów w różnych językach np. Visual Basic Script, Java Script,
PerlScript, Python, TCL(Tool Command Language), Rexx. WSH w Windows 2000 jest
instalowany automatycznie oprócz niego są ładowane też dwa mechanizmy skryptów:
VBScript oraz Jscript. Mechanizm hosta skryptów pozwala tworzyć skrypty znacznie bardziej
złożone niż w wierszu poleceń. Poza tym skrypty obsługiwane przez WSH bazują na
architekturze ActiveX co oznacza, że mogą być uruchamiane przez przeglądarke Internet
Explorer po umieszczeniu ich na stronie HTML. Mogą być też uruchamiane po stronie
serwera w środowisku sieci Intranet czy Internet.
Do pisania skryptów nie jest potrzebny żaden specjalizowany edytor. Można wykorzystać
dowolny edytor tekstowy np. Notatnik a następnie zapisywać pliki z odpowiednim
rozszerzeniem dla VBasicScript - *.vbs, dla JScript - *.js.
Są dwie wersje Hosta skryptów systemu Windows: wersja pracująca w trybie graficznym
(wscript.exe) zawierająca arkusz właściwości dla systemu Windows do ustawiania
właściwości skryptów oraz wersja pracująca w wierszu poleceń (cscript.exe) zawierająca
przełączniki do ustawiania właściwości skryptów. Można uruchamiać dowolną z tych dwóch
wersji, pisząc w wierszu poleceń wscript.exe lub cscript.exe.
Windows Scripting Host udostępnia szereg obiektów, z których można korzystać w celu
uzyskania
dostępu
do
różnych
komponentów
powłoki
Windows.
Jądrem modelu obiektowego Windows Scripting Hosta jest obiekt o nazwie WScript. Obiekt
WScript zawsze istnieje i jest dostępny przynajmniej jeden egzemplarz tego obiektu i zawsze
nazywa się WScript. Obiekt WScript służy do uzyskania informacji odnośnie aktualnie
wykonywanego skryptu oraz o samym Windows Scripting Hoście. Obiekt ten tworzy
wszystkie
inne
obiekty
używane
przez
skrypt
WSH.
Do tworzenia nowych obiektów używa się metody CreateObject. Metoda ta nie służy tylko do
tworzenia obiektów Windows Scripting Host.
1. Uruchamianie skryptów z lini poleceń
cscript [nazwa skryptu] [parametry hosta] [parametry skryptu]
Gdzie:
• nazwa skryptu czyli pełna nazwa pliku skryptu razem z rozszerzeniem i koniecznymi
informacjami ścieżki.
• parametry hosta to przełączniki wiersza polecenia włączające lub wyłączające
poszczególne funkcje Hosta skryptów systemu Windows. Parametry hosta zawsze
poprzedzone są dwoma znakami kreski ułamkowej (//).
• parametry skryptu to przełączniki wiersza polecenia przekazywane do skryptu.
Parametry skryptu zawsze poprzedzone są jednym znakiem kreski ułamkowej (/).
Parametry hosta
//C
Ustanowienie cscript.exe domyślną aplikacją do uruchamiania skryptów
//S
zapisanie opcji wiersza poleceń
//H:prog Rejestruje program Cscript.exe lub Wscript.exe jako domyślną aplikację
uruchamiania skryptów. Jeżeli nie poda się żadnej wartości, jako domyślny
przyjmuje się program Wscript.exe.
//D
Właczenie debugera (analizatora procesu działania skryptu)
Politechnika Częstochowska
Katedra Inżynierii Komputerowej
//X
//E:apr
//B
//I
//logo
//nologo
//T:nn
//?
Systemy Operacyjne, Studia Dzienne
Windows 2000 , Ćw 6, strona 2
Wykonanie skryptu w kontroli debugera
Parametr apr określa język uruchamianego skryptu
Tryb wsadowy bez wyswietlania alarmów o błędach
Tryb interaktywny
Wyświetla logo podczas uruchamiania skryptu.
logo nie zostaje ukazane po uruchomieniu skryptu.
Określa maksymalny czas, przez jaki skrypt może być uruchomiony (w
sekundach). Czas ten może wynieść maksymalnie 32 767 sekund. Wartość
domyślna to brak limitu.
Wyświetla dostępne parametry polecenia oraz pomoc do ich używania (tak samo,
jak wpisanie polecenia Cscript.exe bez parametrów i bez skryptu).
Wscript.exe
Jest 32-bitowym modułem skryptów dla Windows, dzięki któremu wykonanie skryptu
następuje po dwukrotnym kliknięciu na ikonie pliku skryptu.
Wscript uruchamiamy także po wpisaniu Wscript.exe w oknie dialogowym Uruchom menu
Start.
2. Zalety WSH
Dzięki WSH możemy
• Uzyskać bezpośredni dostęp do sterowania rejesterem
• Dokonywanie dowolnych operacji na systemie plików,
• Obiekt FileSystemObject oferuje zbiór funkcji umożliwiających kopiowanie i
przenoszenie zbiorów, modyfikownie ich zawartości, zakładanie katalogów, folderów,
odczytywanie ilości wolngo czy zajętego miejsca na dysku.
• Obiekt File reprezentuje pojedyńczy plik. Udostępnia pola zawierające podstawowe
informacje o pliku jak data jego utworzenia, ostatniej modyfikacji, skrócona nazwa, pełna
ścieżka dostępu czy rozmiar pliku. Kolekcja plików to obiekt Files.
• Manipulować łańcuchami znakowymi np. usuwanie znaków z początka lub końca
łańcucha, łączenie ciągów, wyszukiwanie, zmiana wielkości liter itp.
• Ważną zaletą jest równiż to iż napisany skrypt jest od razu gotowy do użycia , bez
konieczności długotrwałego kompilowania.
3.
•
•
•
•
•
•
Reguły VBScript
VBScript nie odróżnia małych i dużych liter
znaki ukryte za wyjątkiem końca wiersza są ignorowane w czasie wykonywania skryptu
znak końca wiersza wskazuje koniec kompletnej instrukcji / jeden wiersz to jedna
instrukcja /
aby kontynuawać instrukcję w następnym wierszu należy użyć znaku (_) poprzedzonego
spacją
aby w jednym wierszu użyć kilku instrukcji należy użyć (:)
komentarze umieszcza się po znaku (') lub za pomocą słowa kluczowego (Rem)
4. Ważniejsze metody i pola obiektu FileSystemObject
FileExists - sprawdza czy na dysku znajduje się plik o podanej nazwie
Obiekt.FileExists(nazwa pliku)
FolderExists - funkcja ta zwraca wartość true, jeśli istnieje poszukiwany folder
CopyFile - kopiuje we wskazane miejsce plik lub grupę plików podanych jako parametr
(przy podawaniu nazw zbiorów można używać znaków specjalnych ( np. *, ?, )
Politechnika Częstochowska
Katedra Inżynierii Komputerowej
Systemy Operacyjne, Studia Dzienne
Windows 2000 , Ćw 6, strona 3
Obiekt.CopyFile źródło, przeznaczenie, nadpisanie
Nadpisanie parametr opcjonalny jeśli ma wartość True to nadpisuje plik jeśli False to nie
nadpisuje zawartości.
CopyFolder - kopiuje folder razem z zapisanymi w nim plikami we wskazane miejsce
CreateFolder - tworzy folder o podanej nazwie jednak nie ma możliwości utworzenie za
pomocą jednorazowego wywołania tej funkcji struktury katalogów.
Obiekt.CreateFolder(nazwa folderu)
Np.
Set obiekt = CreateObject("Scripting.FileSystemObject")
Set Folder = obiekt.CreateFolder("C:\SOS")
CreateTextFile - tworzy plik tekstowy o podanej nazwie
Set obiekt = CreateObject("Scripting.FileSystemObject")
Set Plik = obiekt.CreateTextFile("C:\SOS\Skrypt.txt")
DeleteFile - kasuje plik o podanej nazwie. Funkcja ta umożliwia kasowanie plików z
atrybutem „Tylko Odczyt“
Obiekt.DeleteFile(nazwa pliku)
DeleteFolder - kasuje folder razem z zawartością.
Obiekt.DeleteFolder(nazwa folderu)
GetDriveName - funkca zwraca nazwę napędu, na którym jest zapisany plik, jej parametrem
wywołania jest ścieżka dostępu do pliku
GetExtensionName – jw. ale zwraca rozszerzenie nazwy podanego pliku.
GetFile – parametrem wywołania funkcji jest nazwa pliku. Funkcja zwraca obiekt typu File,
reprezentujący wybrany zbiór na dysku. Jeśli zbiór nie zostanie znaleziony, generowany jest
błąd.
GetFileName – z ciągu znaków zawierającego pełną nazwę pliku wraz ze ścieżką dostępu
wycina wyłącznie nazwe zbioru.
Obiekt.GetFileName(ścieżka do konkretnego plik)
GetFolder – zwraca obiekt typu Folder reprezentujący katalog , nazwa jego została podana
jako parametr wywołania tej funkcji.
Set obiekt = CreateObject("Scripting.FileSystemObject")
Set Folder = obiekt.GetFolder("C:\SOS")
GetParentfolderName – funkcja ta wyswietla nazwę katalogu nadrzędznego wobec kartoteki
podanej jako parametr wywołania.
GetSpecial Folder – metoda podaje nazwę folderów systemowych (Winnt, System, Temp )
w zależności od parametrów wywołania.
Obiekt.GetSpecjalFolder(nazwa folderu specjalnego)
Folder specjalny może mieć jedną z następujących wartości:
WindowsFolder 0 - zawiera pliki zainstalowane przez system operacyjny.
SystemFolder 1 – katalog systemowy zwraca biblioteki, czcionki systemowe, sterowniki
urządzeń.
TemporaryFolder 2 – Katalog Temp jest używany do przechowywania plików tymczasowych.
GetTempName – zwraca unikatową nazwę, która może zostać wykorzystana na przykład do
utworzenia pliku tymczasowego.
MoveFile – pozwala na przeniesienie pojedyńczego pliku lub ich grupy do wskazanego
folderu
Obiekt.MoveFile źródło, przeznaczenie
MoveFolder – jw. , umozliwia przenoszenie folderów wraz z ich zawartością
OpenTextFile – umożliwia otwarcie pliku. Jeśli zbiór o podanej nazwie nie istniej może
zostać utworzony.
Obiekt.OpenTextFile(nazwa pliku, tryb, utwórz, format)
Politechnika Częstochowska
Katedra Inżynierii Komputerowej
Systemy Operacyjne, Studia Dzienne
Windows 2000 , Ćw 6, strona 4
Opcjonalny tryb może być jedną z trzech stałych:
ForReading 1 - otwiera pliki tylko do odczytu
ForWriting 2 - otwiera pliki tylko do pisania. Nie można czytać tego pliku.
ForAppending 8 - dopisuje do końca pliku.
Utwórz opcjonalny jeśli ma wartość True to tworzy nowy plik, jeśli False nie tworzy pliku.
Domyślnie jest False.
Format opcjonalnie definiuje format w jakim będzie otwarty plik. Domyślnym trybem jest
ASCII.
Składnia wybranych instrukcji
• zmienne- służą do przechowywania informacji i noszą nazwy przyporządkowane w
skrypcie.
VBScript nie wymaga deklaracji zmiennej w skrypcie przed jej użyciem, chyba że
używamy instrukcji Option Explicit. Wartość zmiennych może ulegać zmianom w trakcie
wykonywania skryptu. Zmienne użyte w skrypcie obowiązują tylko podczas
wykonywania skryptu a następnie są usuwane z pamięci komputera.
Deklaracja zmiennej w skrypcie wygląda następująco:
Dim x
Nazwa zmiennej w VBScript:
- może zawierać do 255 znaków
- musi zaczynać się od znaku alfabetu
- nie może zawierać spacji
- nie może zawierać żadnych znaków specjalnych za wyjątkiem podkreślenia
- musi być unikatowa w obrębie swojego działania
• Set ustawia wartość zmiennej
• Stałe - reprezentują wartości wbudowane w język programowania. Stałe można
deklarować w skrypcie za pomocą instrukcji Const.
5. Instrukcje warunkowe
• If warunek Then instrukcja
Instrukcja ta pozwala określic wyrażenie warunkowe w skrypcie i w zależności od wyniku
wykonać odpowiednie działanie.
Konstrukcja instrukcji warunkowej jest następująca:
If warunek
then instrukcje
else instrukcje
End If
warunek - określa warunek do spełnienia
instrukcje - po słowie then będą wykonywane jeśli warunek będzie spełniony
instrukcje - po słowie else będą wykonywane jeśli warunek nie będzie spełniony
Można pominąć część else ........ - wówczas przy nie spełnieniu warunku będzie wykonywana
dalsza część skryptu po słowach End IF.
•
While
While warunek
Blok instrukcji do wykonania
Wend
Politechnika Częstochowska
Katedra Inżynierii Komputerowej
Systemy Operacyjne, Studia Dzienne
Windows 2000 , Ćw 6, strona 5
6. Pętle
Wykorzystywane są do wielokrotnego wykonywania sekwencji poleceń. Mamy kilka rodzaji
pętli w zależności od zastosowania.
• Pętla For...Next
For zmienna = start To koniec Step krok
Instrukcje, które mają być powtarzane
Next zmienna
Instrukcja ta pozwala na wykonanie grupy instrukcji określoną liczbę razy.
Step stosujemy tylko jeśli zachodzi taka potrzeba .
Sami określamy /przedział/ ile razy mają być wykonane instrukcje wewnątrz pętli.
For Each –zmienna in zmienna
Instrukcje do wykonania
Next
pętla przetwarzana jest do chwili przetworzenia wszystkich elementów określonego obiektu.
W obrębie obu powyższych pętli można zastosować polecenie Exit For ,które powoduje
natychmiastowe opuszczenie pętli. Przetwarzanie skryptu jest wówczas kontynuowane w
miejscu pierwszego polecenia znajdującego się za pętlą.
•
Pętla Do –Loop „wykonaj dopóki“ wykonuje zawarte w niej instrukcje tak długo, aż
zostanie spełniony określony warunek.Tę pętlę można przerwać poleceniem Exit Do.
Składnia tej pętli może być różna w zależności od tego, gdzie i w jaki sposób sprawdzany jest
warunek pętli.
Do While warunek
Blok instrukcji do wykonania
Loop
7. Przykładowe skrypty
Jako, że będziemy używać VBScriptu, który jest językiem programowania , jako student
drugiego roku informatyki znasz już podstawy programowania zatem pisanie prostych
skryptów w WSH nie powinno Ci sprawić problemu.
• Skrypt ten o nazwie wyswietl.vbs przy wykonaniu uruchamia Exploratora.exe
Set o = CreateObject("Wscript.shell")
o.Run("Explorer.exe")
• Skrypt poniższy petla.vbs wyświetli cztery razy wyrazy „Labolatorium hurra“
dim i
For i=1 to 4
Wscript.Echo "Labolatorium hura"
Next
•
Skrypt przenies.vbs powoduje przeniesienie pliku dom.doc do katalogu archiwum
Set obiekt = CreateObject("Scripting.FileSystemObject")
obiekt.MoveFile "C:\zapis\Nowy folder\dom.doc" , "D:\archiwum"
Politechnika Częstochowska
Katedra Inżynierii Komputerowej
Systemy Operacyjne, Studia Dzienne
Windows 2000 , Ćw 6, strona 6
•
Skrypt poniższy o nazwie linijki.vbs zlicza linijki w których jest jakiś znak (litera, cyfra,
kropka, itp.).
Przy uruchamianiu skryptu należy podać nazwę pliku, w którym będą zliczane znaki.
dim plik,otwarty,nazwa,argumenty,pom
set argumenty=Wscript.arguments
if argumenty.Count then
nazwa=argumenty.Item(0)
else
nazwa=InputBox("Podaj nazwe pliku: ")
if nazwa="" then Wscript.Quit(1)
end if
set plik=CreateObject("Scripting.FileSystemObject")
if not plik.FileExists(nazwa) then
MsgBox "Plik nie istnieje:" &nazwa,20
Wscript.Quit(2)
end if
set otwarty=plik.OpenTextFile(nazwa,1)
linijki=0
while not otwarty.AtEndOfStream
pom=otwarty.ReadLine
if Len(pom) <> "0" then
linijki=linijki+1
end if
Wend
otwarty.Close
MsgBox "Liczba linijek w pliku: "&nazwa&" wynosi "&linijki ,75
REM znak & łączy łańcuchy
Zadania do samodzielnego wykonania
Przećwicz powyższe skrypty
1. Napisz, krótki skrypt (stosując oczywiście WSH ), który wyświetli np. trzy unikalne
nazwy w celu nadania ich innym tworzonym plikom.
2. Napisz skrypt, który obliczy i wyświetli wynik wyrażenia np. 1000+5^3*8/16
3. Napisz skrypt, który wyświetli liczby od cyfry 0 do 25 z odstępem pięciu cyfr.
4. Zmodyfikuj program linijki.vbs tak aby obok liczby linijek zapisanych wyświetlał liczbę
linijek pustych ( nie zapisanych)
5. Napisz skrypt, który wyświetli po kolei nazwy podfolderów wraz z ich rozmiarami w
katalogu np.Winnt
6. Napisz skrypt, który zliczy wszystkie podfoldery w katalogu np. Program Files. W
wyniku ma wyświetlić tylko liczbę podfolderów.
7. Napisz skrypt, którego zadaniem będzie przeniesienie napisanych przez Ciebie skryptów
do katalogu WSHKAT na dysku C.
8. Napisz skrypt, którego zadaniem będzie skopiowanie katalogu WSHKAT na dyskietkę.
9. Napisz skrypt, który usunie katalog WSHKAT z dysku C.