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.