Praca w przelocie

Windows Scripting Host pojawił się po raz pierwszy jako element składowy Windows 98. Ograniczone możliwości tego narzędzia utrudniały tworzenie użytecznych skryptów. Obecnie Microsoft oferuje kolejną, rozszerzoną wersję WSH.

Prawdopodobnie najistotniejszą zmianą w najnowszej wersji WSH jest wzbogacenie jej możliwościami dokonywania praktycznie dowolnych operacji na systemie plików. Nowy obiekt FileSystemObject oferuje bogaty zbiór funkcji umożliwiających kopiowanie i przenoszenie zbiorów, modyfikowanie ich zawartości, a także zakładanie i kasowanie folderów oraz odczytywanie ilości wolnego czy zajętego miejsca na dysku. Istnieje także obiekt File reprezentujący pojedynczy plik. Obiekt udostępnia pola zawierające podstawowe informacje o zbiorze, takie jak data jego utworzenia oraz ostatniej modyfikacji, skrócona nazwa, pełna ścieżka dostępu czy rozmiar pliku.

Oprócz obsługi systemu plików nowe WSH oferuje także bogaty zbiór funkcji służących do manipulowania łańcuchami znakowymi (usunięcie części znaków z początku lub końca łańcucha, łączenie ciągów, wyszukiwanie, zmiana wielkości liter itd.). Dzięki tym nowościom dosyć łatwo można tworzyć programiki upraszczające i przyśpieszające wykonywanie często powtarzanych, monotonnych czynności, takich na przykład jak synchronizowanie zawartości dwóch katalogów. Opisany poniżej skrypt stanowi prezentację nowych możliwości WSH, ze szczególnym naciskiem na metody manipulacji plikami.

Kłopoty nomadów

Każdemu, kto często korzysta z komputera, zdarzyło się pewnie rozpocząć jakąś pracę na jednym stanowisku, a następnie kontynuować ją na innym. Taka sytuacja zdarzyć się może nie tylko ciągle podróżującym biznesmenom, ale także studentom czy urzędnikom. Projekt rozpoczęty na zajęciach na uczelni czy w pracy trzeba czasem dokończyć w domu po to tylko, aby na drugi dzień przynieść go z powrotem do firmy czy szkoły i pokazać przełożonym bądź nauczycielowi. Wymaga to zwykle uważnego kopiowania najbardziej aktualnej wersji naszego projektu pomiędzy kilkoma komputerami za pomocą dyskietki lub sieci komputerowej. Bardzo łatwo przy tym zapomnieć o jakimś ważnym pliku albo nadpisać zbiór w nowszej wersji starszym dokumentem i w ten sposób stracić część swojej pracy. Problem rozwiązać może skorzystanie z systemowej Aktówki. Użytkownicy tego narzędzia często narzekają jednak, że jest ono mało wygodne. Jeśli Aktówka stwierdzi, że synchronizowane pliki się różnią, użytkownik zostanie o tym poinformowany i będzie musiał potwierdzać chęć skopiowania każdego z nich. Nie jest zatem możliwe przeprowadzenie tego procesu bez interwencji użytkownika, co przy dużej liczbie plików jest dosyć kłopotliwe.

Możliwości WSH pozwalają na utworzenie alternatywnego narzędzia, które pozwoli na synchronizację zawartości dwóch katalogów. Po uruchomieniu może ono działać automatycznie, bez konieczności potwierdzania przez użytkownika zarejestrowanych zmian. Oczywiście w stosunku do systemowej Aktówki ma ono kilka ograniczeń. Jednak ze względu na to, że nasze narzędzie jest napisane w języku VBScript i uruchamiane jako aplikacja Hosta skryptów systemu Windows, może zostać dowolnie zmodyfikowane, tak aby odpowiadało indywidualnym potrzebom każdego użytkownika.

Zaprezentowany program potrzebuje do pracy dwóch parametrów – nazw katalogów, których zawartości chcemy synchronizować. Jako pierwszą podajemy nazwę katalogu źródłowego, zawierającego nowsze wersje plików. Drugi parametr określa folder, w którym ma zostać utworzone archiwum.

Skrypt sprawdza, czy w katalogu docelowym znajdują się kopie plików zapisanych w folderze źródłowym. Jeśli zbiory już istnieją, porównywane są daty ich ostatniej modyfikacji. Jeżeli okaże się, że katalog źródłowy zawiera nowsze wersje, pliki są kopiowane, tak aby w katalogu docelowym znajdował się najbardziej aktualny zestaw zbiorów.

Korzystanie ze skryptu jest bardzo proste. Uruchamiamy go i jako katalog źródłowy wskazujemy folder, w którym zapisaliśmy wyniki naszej pracy. Kartoteka docelowa natomiast powinna zostać utworzona na dyskietce. Skrypt umieści na niej kopie wszystkich plików zapisanych w katalogu roboczym na dysku twardym. Następnie dyskietkę umieszczamy w napędzie innego komputera i ponownie uruchamiamy skrypt. Tym razem jednak jako katalog źródłowy podajemy nazwę foldera znajdującego się na naszej dyskietce. Po zakończeniu działania skryptu na naszym dysku twardym będą najnowsze wersje wszystkich plików, nad którymi pracujemy.

Skąd i dokąd

Najwygodniejszym sposobem korzystania z prezentowanego skryptu jest podanie parametrów pracy, gdy ten o to zapyta. Można przygotować sobie także skrót, który pozwoli na uruchomienie programu z ustalonymi parametrami. Jest to szczególnie wygodne, kiedy często aktualizujemy ten sam projekt. W tym celu klikamy Pulpit prawym przyciskiem myszki i z menu podręcznego wybieramy polecenie

Nowy element

|

Skrót

. Wskazujemy nasz skrypt, a po zakończeniu pracy kreatora klikamy nowo utworzony skrót prawym przyciskiem myszki. Wybieramy opcję Właściwości i wpisujemy parametry wywołania za nazwą skryptu, znajdującą się w polu Obiekt docelowy. Okienko zamykamy, klikając przycisk OK .

Jeżeli podczas wywołania nie podamy żadnych parametrów, nasz skrypt zapyta o nie

Użytkownik nie musi jednak podawać nazw folderów w linii komend. Jeśli skrypt stwierdzi, że brakuje mu informacji potrzebnych do działania, poprosi o wprowadzenie niezbędnych danych, wyświetlając okienko dialogowe. Przed jego pojawieniem się skrypt sprawdza jeszcze, czy w Rejestrze systemowym nie znajduje się grupa o nazwie WSHBackuper, zawierająca dwa klucze – Source i Destination. Przechowują one nazwy ostatnio synchronizowanych katalogów. Skrypt wyświetla te dane jako wartości domyślne w polu, w którym użytkownik może podać parametry. Ze względu na ograniczenia funkcji InputBox okienko to nie zawiera przycisku Przeglądaj, umożliwiającego wskazanie potrzebnego foldera. Jego nazwę trzeba po prostu wpisać ręcznie. Możliwe jest także uruchomienie skryptu tylko z jednym parametrem, będącym nazwą katalogu źródłowego. O podanie nazwy drugiego skrypt poprosi podczas pracy.

INFO
Grupa dyskusyjna
Uwagi i komentarze dotyczące artykułu: #
Pytania techniczne dotyczące zagadnień poruszanych w tekście: #
Internet
Windows Scripting Host FAQ:
http://wsh.glazier.co.nz/default.asp
Win32 Scripting
http://cwashington.netreach.net/main_site/ default.asp?topic=news
W dziale Software | WindowsScriptingHost znajduje się plik z opisywanym skryptem
Więcej:bezcatnews