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.