Запуск сценариев (WScript.Exe и CScript.Exe)
Лабораторная работа №5.
Сервер сценариев Windows Scripting Host. Методы объектов WscriptShell и WshNetwork
Цель: Овладеть навыками работы сервером сценариев ОС Windows, изучить возможности сервера сценариев, режимы выполнения сценариев и методы объекта WscriptShell иWshNetwork.
Общие положения
Долгое время для выполнения однотипных задач в среде Windows и DOS служили командные (пакетные) BAT-файлы. Основным их недостатком были примитивный DOS-интерфейс – отсутствие интерактивности, и довольно ограниченные возможности по работе с WINDOWS (трудность работы в сети, с ярлыками, с реестром и т.д.).
Ситуация изменилась, когда Microsoft разработала Сервер Сценариев (Windows Scripting Host), который должен служить для автоматизации работы с повторяющимися процессами. Сам Windows Scripting Host не является языком как таковым, он только представляет свойства и методы для работы в Windows, которые могут использоваться другими языками сценариев. Наиболее удобными и предназначенными для этого явились ранее разработанные самой Microsoft языки сценариев Visual Basic Scripting Edition (VBScript) и JScript.
Раньше языки VBScript и JScript по своим возможностям были очень близки к Visual Basic for Applications - они также могли быть вызваны только из MS Internet Explorer и нескольких других программ Microsoft, которые их поддерживали.
С появлением Windows Scripting Host появилась возможность создавать для них отдельные сценарии, которые можно запускать и без Internet Explorer.
Также преимуществом Windows Scripting Host является то, что для запуска сценариев требуется мало памяти и то, что файлы сценариев могут быть практически любого размера (содержать десятки тысяч строк).
Еще одним преимуществом Windows Scripting Host является отсутствие среды разработки - не нужны компиляторы, редактирование сценариев может производиться в любом текстовом редакторе, способном работать с текстовыми файлами.
Сервер сценариев предназначен для автоматизации повторяющихся задач и во многом, по сравнению с обычными языками программирования, обладает достаточно скромными возможностями. Но по сравнению с пакетными файлами DOS он обладает более широкими возможностями. Такими как:
- вывод сообщений на экран;
- запуск других программ;
- работать с сетевыми дисками;
- устанавливать принтеры;
- работать с переменными среды;
- работать с реестром.
В Windows 2000 и последующих версиях Windows Scripting Host установлен по умолчанию. Отключить его использование можно только удалением ассоциаций с его файлами. Установленный Windows Script Host поддерживает несколько видов файлов: vbs, vbe, js, jse, wsf, wsc и wsh. Все они (кроме vbe и jse) являются простыми текстовыми файлами и могут редактироваться в любом текстовом редакторе.
Файлы .vbs и .js являются файлами, написанными на языке сценариев MS Visual Basic Script и MS JScript соответственно.
Файлы vbe и jse– это vbs и js-файлы зашифрованные с помощью программы MS Script Encoder.
Файлы с расширением .wsf – это файлы, содержащие XML-разметку для работы с WSH.
Файлы wsc - Windows Script Components (WSC) позволяют упаковывать сценарии для использования их в качестве СОМ-компонентов. По сути, это те же wsf-файлы, еще и содержащие COM-компоненты.
Файлы wsh являются файлами настроек Сервера Сценариев.
Запуск сценариев (WScript.exe и CScript.exe)
Для запуска сценариев, в составе Windows Scripting Host служат файлы WScript.exe (диалоговый режим) и CScript.exe (режим командной строки). Они находятся в каталоге C:\WINDOWS\system32\.
WScript.exe служит для запуска сценариев из Windows. Используя его, вы можете запускать сценарии подобно обычным приложениям Windows. Вот несколько способов:
1. Запускать сценарий, как обычное приложение двойным щелчком мыши, выделить и нажать Enter и т.д.
2. Ввести имя файла сценария и путь к нему в окне в окне “Выполнить” (RUN) меню “Пуск” (Start).
3. Ввести в строку окна “Выполнить” WScript.exe и имя файла сценария (с указанием пути к нему). При этом вы можете использовать параметры запуска WScript.exe.
CScript.exe - это версия Windows Scripting Host, которая используется для запуска сценариев из командной строки.
Синтаксис:
CScript [параметры] имя_файла.расширение [аргументы]
Для запуска сценариев, как с помощью CScript.exe так и с WScript.exe, можно использовать следующие параметры командной строки:
Параметр | Версия WSH | Описание |
//B | 1.0 | Пакетный режим (подавляется вывод информации, запросов и сообщений об ошибках) |
//D | 2.0 | Включить активную отладку |
//E:язык | 2.0 | Указать язык сценария для исполнения файла |
//H:CScript | 1.0 | Заменить исполняемый сервер сценариев на CScript.exe |
//H:WScript | 1.0 | Заменить исполняемый сервер сценариев на WScript.exe |
//I | 1.0 | Диалоговый режим (противоположный //B) (по умолчанию) |
//Job:xxxx | 2.0 | Выполнить задание xxxx WSF-файла |
//Logo | 1.0 | Отображать заставку (по умолчанию) |
//Nologo | 1.0 | Не выводить заставку |
//S | 1.0 | Запомнить параметры текущей командной строки для данного пользователя |
//T:nn | 1.0 | Задать время исполнения сценария в секундах |
//X | 2.0 | Выполнить сценарий под отладчиком |
//U | 2.0 | Применять кодировку Unicode для перенаправленного консольного ввода-вывода |
Например:
Cscript //T:10 Пример1.vbs
Отвести на выполнение сценария Пример1.vbs 10 секунд времени.
Попробуем сделать используемым сервером сценариев по умолчанию CScript.exe.
Для этого введем в командной строке:
wscript //h:cscript
С этого момента, все сценарии будут запускаться в режиме командной строки. Для многих сценариев выводящих информацию это будет несколько неудобно.
Попробуем снова запустить сценарий VBScript Пример1.vbs.
Прочитать надпись практически невозможно, поскольку окно быстро “промелькнет” на экране.
Чтобы снова сделать сервером по умолчанию WScript.exe, введем в командную строку:
wscript //h:wscript
И снова запускаемые файлы сценариев по умолчанию запускаются в диалоговом режиме.
Какой способ лучше, нельзя сказать однозначно. У каждого есть свои плюсы и минусы. В пользу WScript.exe говорит его интерактивность. В пользу CScript.exe – незаметность для пользователя. Хотя для незаметности лучше всего включить пакетный режим с параметром //b.