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

Transkrypt

Host skryptów systemu Windows (WSH, Windows Scripting Host)
Systemy operacyjne labolatorium 4
Paweł Gmys
strona 1
Host skryptów systemu Windows
(WSH, Windows Scripting Host)
WSH służy do tworzenia skryptów w różnych językach np. Visuat 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
zlożone niż w wierszu poleceń. Poza tym skrypty obsługiwane przez WSH bazują na architekturze ActiveX co oznacza, że mogą być uruchamiane przez przeglądarkę 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.
Uruchamianie skryptów z linii 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.
Systemy operacyjne labolatorium 4
Paweł Gmys
strona 2
//D
Włączenie debugera (analizatora procesu działania skryptu)
//X
Wykonanie skryptu w kontroli debugera
//E:apr
Parametr apr określa język uruchamianego skryptu
//B
Tryb wsadowy bez wyświetlania alarmów o błędach
//I
Tryb interaktywny
//logo
Wyświetla logo podczas uruchamiania skryptu.
//nologo
logo nie zostaje ukazane po uruchomieniu skryptu.
//T:nn
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.
Zalety WSH
Dzięki WSH możemy
• Uzyskać bezpośredni dostęp do sterowania rejestrem
• Dokonywać 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
wolnego czy zajętego miejsca na dysku.
• Obiekt File reprezentuje pojedynczy 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ątku lub końca łańcucha,
łączenie ciągów, wyszukiwanie, zmiana wielkości liter itp.
• Ważną zaletą jest również to, iż napisany skrypt jest od razu gotowy do użycia „bez konieczności długotrwałego kompilowania.
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 kontynuować 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)
Systemy operacyjne labolatorium 4
Paweł Gmys
strona 3
Ważniejsze metody i pola obiektu File
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. *,?)
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 ( Set Folder obiekt.CreateFolder(TC:\SOST)
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 - funkcja 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 nazwę zbioru.
Obiekt.GetFileName (ścieżka do konkretnego pliku)
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 wyświetla nazwę katalogu nadrzędnego 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.GetSpecialFolder (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.
Systemy operacyjne labolatorium 4
Paweł Gmys
strona 4
MoveFile — pozwala na przeniesienie pojedynczego pliku lub ich grupy do wskazanego folderu
Obiekt.MoveFile źródło, przeznaczenie
MoveFolder - jw. umożliwia przenoszenie folderów wraz z ich zawartością
OpenTextFile - umożliwia otwarcie pliku. Jeśli zbiór o podanej nazwie nie istnieje może
zostać utworzony.
Obiekt.OpenTextFile (nazwa pliku, tryb, utwórz, format)
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.
Instrukcje warunkowe
• If warunek Then instrukcja
Instrukcja ta pozwala określić 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
Systemy operacyjne labolatorium 4
Paweł Gmys
strona 5
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
Pętle
Wykorzystywane są do wielokrotnego wykonywania sekwencji poleceń. Mamy kilka typów
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
Przykładowe skrypty
Będziemy używać VBScriptu.;, który jest językiem programowania. Zatem zastosowanie tutaj
znajdą zasady programowania strukturalnego.
• Skrypt ten o nazwie wyświetl.vbs przy wykonaniu uruchamia Exploratora.exe
Systemy operacyjne labolatorium 4
Paweł Gmys
strona 6
Set o = CreateObject(”Wscript.shell”)
o. Run (”Explorer. exe”)
• Skrypt poniższy petla.vbs wyświetli cztery razy wyrazy „Labolatorium nr 4”
dim i
For i=1 to 4
Wscript.Echo ”Labolatorium nr 4”
Next
• Skrypt przenies.vbs powoduje przeniesienie pliku dom.doc do katalogu archiwum
Set obiekt = CreateObject(”Scripting.FilesSystemObject”)
obiekt.MoveFile ”C:\zapis\Nowy folder\dom.doc” , ”D:\archiwum”
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
Systemy operacyjne labolatorium 4
Paweł Gmys
strona 7
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. l000+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 ich liczbę.
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.