Centrum Skryptów - Systemy Operacyjne

Jak drukować pliki tekstowe używając skryptu?

Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

*

Jak drukować pliki tekstowe używając skryptu?

Cześć Skrypciarze! W jednym z katalogów mam kilka plików tekstowych. Czy istnieje jakiś sposób, żeby je wydrukować używając skryptu? Wiem, że można wydrukować pliki ze skryptu używając programu Microsoft Word, ale nie mam go na komputerze.

-- MA

Cześć MA! Nie powtarzaj tego nikomu w Microsofcie: nie potrzebujesz Worda, żeby wydrukować sobie kilka plików tekstowych. Zamiast tego możesz użyć obiektu Powłoka (Shell), który jest wbudowany w system operacyjny. A najlepsze w tym wszystkim jest to, że możesz drukować pliki mimo tego, że obiekt Powłoka nie ma metody drukowania. Dziwne, ale prawdziwe.

Możesz to zrobić, ponieważ obiekt Powłoka jest wyposażony w metodę o nazwie InvokeVerbEx. Pozwala ona na wykonywanie zadań, które pojawiają się po kliknięciu prawym klawiszem myszy na plik w Eksploratorze Windows. Kliknij prawym klawiszem myszy jeden z plików tekstowych. Pojawi się menu kontekstowe, w którym zobaczysz takie opcje jak: Otwórz, Drukuj, Edycja, Wytnij, Kopiuj, Usuń. Obiekt Powłoka programowo pozwala na wykonywanie wszystkich tych zadań. Istnieje na przykład skrypt drukujący wszystkie pliki w katalogu C:\Logs:

TargetFolder = "C:\Logs"

Set objShell = CreateObject("Shell.Application")

Set objFolder = objShell.Namespace(TargetFolder) 

Set colItems = objFolder.Items

For Each objItem in colItems

    objItem.InvokeVerbEx("Print")

Next

Po prostu podłączamy się do katalogu C:\Logs i zgarniamy z niego grupę elementów. Zestaw plików przechowujemy w zmiennych zbiorach colItems, używając następującej linii kodu:

Set colItems = objFolder.Items

Zauważ, że w tym przykładzie ułatwiliśmy sobie zadanie, upewniając się, że C:\Logs zawiera tylko pliki dziennika i że wszystkie chcemy wydrukować. Jeśli C:\Logs zawiera inne pliki, których nie chcesz drukować, musisz zamieścić kod, który określi, które pliki mają, a które nie mają zostać wydrukowane.

Po umieszczeniu zestawu plików w zbiorze stosujemy pętlę Dla Każdego (For Each), dzięki której wybrane działanie zostanie powtórzone na wszystkich elementach w zbiorze. Dla każdego elementu w zbiorze (inaczej mówiąc, dla każdego pliku w folderze) stosujemy metodę InvokeVerbEx, zaznaczając, że chcemy wydrukować wszystkie pliki:

objItem.InvokeVerbEx("Print")

I to wszystko. Uruchom ten skrypt, a pliki posłusznie wydrukują się jeden po drugim.

Co jednak gdybyśmy chcieli zrobić coś innego, na przykład edytować każdy plik? Żaden problem; wystarczy zastąpić parametr Drukuj stosownym parametrem z menu kontekstowego:

TargetFolder = "C:\Logs" 

Set objShell = CreateObject("Shell.Application")

Set objFolder = objShell.Namespace(TargetFolder) 

Set colItems = objFolder.Items

For Each objItem in colItems

    objItem.InvokeVerbEx("Edit")

Next

Należy pamiętać, że podczas używania InvokeVerbEx Twój skrypt powtarza wszystko to co widzisz podczas używania Eksploratora Windows. Na przykład, co się dzieje w Eksploratorze, gdy klikniesz prawym klawiszem myszy i wybierzesz Usuń? Plik oczywiście nie zostaje automatycznie usunięty, pojawia się okno dialogowe z pytaniem, czy na pewno chcesz wysłać plik do Kosza. Jest to o tyle ważne, że takie samo okno dialogowe pojawi się, gdy wydasz InvokeVerbEx komendę Usuń. Skrypt nie skasuje automatycznie plików w C:\Logs. Pojawi się natomiast okno dialogowe potwierdzenia dla każdego pliku w katalogu:

TargetFolder = "C:\Logs" 

Set objShell = CreateObject("Shell.Application")

Set objFolder = objShell.Namespace(TargetFolder) 

Set colItems = objFolder.Items

For Each objItem in colItems

    objItem.InvokeVerbEx("Delete")

Next

Pamiętaj, że nie wszystkie opcje z menu kontekstowego mogą być dla Ciebie dostępne. Aby dowiedzieć się, których opcji możesz użyć, sprawdź odpowiedni dział na stronie Microsoft Windows 2000 Scripting Guide (j.ang.).

 Do początku strony Do początku strony


Centrum Skryptów - Systemy Operacyjne