Automatyzacja systemu Windows XP

Automatyzacja systemu Windows XP
Przy częstym korzystaniu z komputera, wykonujemy przeważnie ciągle te same czynności, mamy tutaj na myśli administrację, wykonywanie kopii zapasowych lub usuwanie niepotrzebnych plików. System Windows XP oferuje nam trzy sposoby automatyzacji, które mogą wyręczyć użytkownika z tych zadań:
  • Pierwszym z nich jest narzędzie Zaplanowanie zadania, czyli najbardziej przyjazny sposób, polegający na uruchamianiu programów według określonego wcześniej harmonogramu lub przy wybranych zdarzeniach, na przykład przy logowaniu.
  • Kolejnym sposobem są Programy wsadowe, znane już z systemu MS-DOS, które oferują sposób uruchamiania programów oraz poleceń. Uruchamiamy je z wiersza poleceń, a to znaczy, że możemy otworzyć je także poprzez program wsadowy.
  • Ostatnią opcją, którą dokładnie opiszemy jest Host skryptów systemu Windows (WSH), polegający na uruchamianiu skryptów, które są napisane w VBScript (Visual Basic Script), JScript (Java Script) oraz innych językach skryptowych.

Host skryptów

Host skryptów jest, można powiedzieć, gospodarzem dla języków skryptowych. Dzięki niemu możemy wykonywać skomplikowane zadania oraz kontrolować elementy systemu. Skrypty korzystają z technologii ActiveX, która pozwala na sterowanie systemem oraz komputerem.

Plik skryptu ma rozszerzenie .vbs i uruchamiamy go, wpisując jego nazwę w wierszu polecenia lub dwukrotnie kliknąć na jego ikonę w Eksploratorze Windows. Chcąc stworzyć swój skrypt, otwieramy Notatnik a w nim wpisujemy na przykład WScript.Echo ” http://www.centrumxp.pl, następnie zapisujemy go jako plik z rozszerzeniem .vbs. Stworzyliśmy właśnie skrypt, aby zobaczyć jak działa dwukrotnie na niego klikamy. Wyświetli nam się nowe okno Host skryptów systemu Windows, a w nim tekst, który umieściliśmy w cudzysłowie.

Język

Nie ma znaczenia, z jakiego języka będziemy korzystali w Hoście skryptów. Przyjrzyjmy się jednak odmianie języka Microsoft Visual Basic jakim jest VBScript. Różnica między językiem Visual Basic a VBScript jest taka, że ta druga ma tylko zmienne wariantowe. Musimy użyć funkcji Dim i nazwy zmiennej, ponieważ wszystkie zmienne są takie same i nie możemy podać jej typu. Przykładowy skrypt Special.vbs z użyciem tego języka wygląda tak:

Option Explicit

Dim objWSShell

Dim strMsg

Dim intCtr

Set objWSShell = WScript.CreateObject("WScript.Shell")

WScript.Echo "Początkowa lokalizacja pulpitu :" & objWSShell.SpecialFolders("Desktop") _& vbNewLine

strMsg = "Wszystkie Twoje specjalne foldery znajdują się w:” & vbNewLine

For intCtr = 0 To objWSShell.SpecialFolders.Count - 1

strMsg = strMsg & objWSShell.SpecialFolders.Item(intCtr) & vbNewLine

Next 

WScript.Echo strMsg

Początek skryptu zawiera instrukcję Option Explicit, która nakazuje użycia instrukcji Dim dla każdej zmiennej. Instrukcja Set tworzy obiekt WScript Shell, uzyskując tym samym dostęp do folderów specjalnych, dzięki obiektowi SpecialFolders. Uzyskamy wówczas informację:

W kolejnej części kodu widzimy pętle For…Next, która wyświetla foldery specjalne. Zamiast kolejny raz wstawiać instrukcję WScript.Echo w pętli, wstawiliśmy wynik do ciągu strMsg i wyświetliliśmy go po zakończeniu pętli. Rezultat tego będzie taki, że zostanie wyświetlone tylko jedno okno dla całej pętli.

Znaczniki

Gdy używamy skryptów WSH powinniśmy wiedzieć, że mamy możliwość użycia programów w języku VBScript w plikach .vbs oraz pisanych w języku JScript z rozszerzeniem .js. Pliki.wsf są plikami języka XML (Extensible Markup Language), i używa się w nich znaczników. Przykładem może tutaj być plik centrumxp.wsf:

<?XML version="1.0"?>
<package>
<job id="job1">
<?job debug="true"?>
<script language="VBScript" src="MyScript.vbs"/>
<script language="VBScript">
<![CDATA[
WScript.Echo "Hello World"
]]>
</script>
</job>
</package>

Poniższa tabela przedstawia opisy użytych znaczników:

<?XML version="1.0"?> Oznacza, że kod jest zgodny z XML 1.0
<package> Umieszcza kilka zdań w jednym pliku
<job id="job1"> Rozpoznaje ilość zadań w pliku
<?job debug="true"?> Zezwolenie na użycie debugera skryptów
<script language="VBScript" src="MyScript.vbs"/> Łączy inne pliki z bieżącym
<script language="VBScript"> Otwiera oraz zamyka skrypt
<![CDATA[]]> Parser traktuje kod jako znak i go nie interpretuje
<object> Definiuje obiekty zawarte w skrypcie
<reference> Odwołanie do zewnętrznej biblioteki, pozwala na użycie zdefiniowanych stałych
<resource> Izoluje tekst i dane, które nie mogą być zakodowane w skrypcie

Debugowanie

Jeśli chcemy debugować skrypty, musimy najpierw zainstalować program Microsoft Script Debuger. Gdy chcemy zdebugować plik, musimy wcześniej do kodu dodać jedną linijkę

<?job debug=”true”?>

Debugera włączamy używając przełączników poleceń Cscript oraz Wscript. Mamy dwa przełączniki

//X - uruchamia on debuger, ładuje skrypt i zatrzymuje go przy pierwszej linii skryptu

//D - uruchamia debuger tylko wtedy, gdy w którejś linii napotka na błąd.

Stwórzmy skrypt z błędem o nazwie powitanie.vbs:

main()

Function main()

x = 99

WScript.echo "Witaj drogi czytelniku"

WScript.echoo "Błąd"

WScript.echo "Cześć"

End Function

Następnie w wierszu poleceń wpisujemy:

Wscript //d powitanie.vbs

Zdanie ”Witaj drogi czytelniku” pojawi się w oknie dialogowym, a gdy naciśniemy przycisk OK, pojawi się okno Microsoft Script Debugger , a w nim zaznaczony błąd. Co prawda debuger znajduje usterkę, ale nie daje możliwości jej naprawy. Debuger posiada trzy dodatkowe okna dostępne w menu View lub z paska narzędzi:
  • Running Documents – okno to pokazuje jakie obecnie skrypty są uruchomione
  • Call Stack – okno w którym wyświetla się historia wywołań do bieżącego punktu skryptu
  • Command Window ­– dzięki temu okienku mamy możliwość przeglądać oraz zmieniać zmienne w skrypcie. Jednak musimy pamiętać, żeby używać w nim takiego samego języka, co uruchomiony skrypt.

Pasek narzędzi

Pasek narzędzi oferuje możliwość krokowego przejścia skryptu. Debuger wykonuje kolejne linijki skryptu, do momentu aż trafi na błąd. Jeśli mamy pewność, że w linijce nie ma błędu, oznaczamy go, aby wiedzieć, od którego miejsca zacząć dalsze sprawdzanie. Przycisk Run szybko przejdzie do tego punktu. Pasek oferuje jedenaście przycisków:

Run Uruchamia skrypt
Stop Debugging Wykonuje skrypt poza debugerem
Break At Next Statement Otwiera aktywny skrypt serwera w debugerze
Step Into Przechodzi do kolejnej instrukcji
Step Over Przechodzi do kolejnej instrukcji ale nie wchodzi w funkcje oraz  instrukcje
Step Out Przechodzi dalej, aż do końca funkcji
Toogle Breakpoint Ustawia lub usuwa punkt wstrzymania
Clear All Breakpoints Usuwa wszystkie punkty wstrzymania
Running Documents Wyświetla okno Running Documents
Call Stack Wyświetla okno Call Stack
Command Window Wyświetla okno Command Window

Obiekty

Obiekt jest zmienną stałą która składa się nie tylko z procedur ale także z danych. Poznaliśmy go już wcześniej, podglądając skrypt Special.vbs, gdzie użyty był WScript.Shell, który pozwala na dostęp do powłoki Windows.VBScipt zawiera czternaście obiektów, a dokładniej:
Class Gwarantuje dostęp do zdarzeń klasy
Dictionary Przetrzymuje dane w formacie klucz/element
Drive Zapewnia dostęp do właściwości dysku
Drives Zbiór obiektów Drive
Err Gwarantuje informacje o błędach
File Właściwość pliku
Files Zbiór obiektów File
 FileSystemObject   Zapewnia dostęp do systemu plików komputera
Folder Właściwości folderu
Folders Kolekcja obiektów Folder
Match Przetwarzanie regularnych wyrażeń
Matches Kolekcja obiektów Match
RegExp Obsługa regularnych wyrażeń
TextStream Sekwencyjny dostęp do pliku

Dzięki Automatyzacji systemu Windows XP możemy ustawić dla każdego programu harmonogram, według którego będzie działać aplikacja w systemie. Dodatkowo, przy pomocy Hostu skryptu systemu Windows możemy otwierać skrypty, które sami wcześniej utworzyliśmy.

Webinar: Jak przygotować firmę na erę AI z nowym planem M365 E7 Frontier Suite?
Webinar: Jak przygotować firmę na erę AI z nowym planem M365 E7 Frontier Suite?