Утилита командной строки cscript.exe является компонентом Windows Script Host (WSH) и предназначена для выполнения сценариев (скриптов), написанных на языках VBScript и Jscript (файлов с расширением .vbs и .js). Сценарии WSH могут запускаться с помощью одной из двух программ — wscript.exe (с графическим интерфейсом) или cscript.exe (с консольным интерфейсом). Функционально, обе программы близки, но отличаются пользовательским интерфейсом, что предполагает разные области применения – графический интерфейс более удобен для выполнения интерактивных сценариев, а консольный – для сценариев администрирования, не требующих диалога с пользователем. Диалоговый режим при выполнении сценариев как с использованием cscript.exe, та и с использованием wscript.exe может быть отключен специальным параметром командной строки, однако, если этого не сделать, сценарий может потребовать вмешательства оператора. Так, например инструкция WScript.Echo, при выполнении в консольном окне, выведет на экран текстовую строку, точно так же, как это делает командный процессор CMD Windows, а при выполнении в графической среде – отобразит стандартное окно сообщений Windows с текстом и кнопкой ”Ok”, нажатие на которую позволит продолжить выполнение сценария.

Большинство сценариев администрирования Windows (в том числе многие сценарии, предлагаемые Microsoft) требуют использовать CScript в качестве сервера сценариев. Также следует отметить, что некоторые из свойств объекта WScript (не путать с сервером сценариев WScript!) существуют только тогда, когда активным сервером сценариев является CScript. По умолчанию, в среде WSH используется сервер сценариев wscript.exe.

1. Описание команды CSCRIPT.

1.1. Формат командной строки cscript.exe:

C:\ CScript имя_сценария.расширение [параметры...] [аргументы...]

1.2. Параметры командной строки:

  • //B — Пакетный режим: подавляются отображение ошибок и запросов сценария
  • //D — Включение режима Active Debugging
  • //E:ядро — Использование указанного ядра для выполнения сценария
  • //H:CScript — Стандартный сервер сценариев заменяется на CScript.exe
  • //H:WScript — Стандартный сервер сценариев заменяется на WScript.exe (по умолчанию)
  • //I — Диалоговый режим (по умолчанию, в противоположность //B)
  • //Job:xxxx — Выполнение указанного задания WSF
  • //Logo — Отображать сведения о программе (по умолчанию)
  • //Nologo — Не отображать сведения о программе во время выполнения
  • //S — Присвоить установкам сервера сценариев Windows значения по умолчанию.
  • //T:nn — Интервал ожидания (в секундах): максимальное время выполнения сценария
  • //X — Выполнение сценария в отладчике
  • //U — Использование кодировки Юникод при перенаправлении ввода-вывода с консоли

Как видим, особенность параметров командной строки для сервера сценариев – это использование двойной косой черты (двойной прямой слэш – forward slash). Для получения подсказки по использованию, допускаются команды cscript /? и cscript -?

2. Примеры использования сервера сценариев CSCript.

2.1. Выполнить сценарий hello1.vbs в пакетном режиме:

C:\ cscript //B hello1.vbs

Сценарий будет выполнен без каких-либо сообщений или запросов пользователю.

2.2. Выполнить сценарий hello1.vbs в среде отладчика c использованием средств активной отладки:

C:\ cscript //D //X hello1.vbs

Порядок работы и возможности определяются отладчиком, установленным в системе по умолчанию.

2.3. выполнить сценарий hello1.js но использовать исполняющее ядро VBScript.Encode:

C:\ cscript.exe /E:VBScript.Encode hello1.js

Надо отметить, что программный модуль cscript.exe, как и wscript.exe, будучи сервером сценариев, не является интерпретатором языка, на котором написан сценарий, и всего лишь выполняет вызов интерпретатора в соответствии с расширением файла или в соответствии со значением параметра //E:. В качестве интерпретаторов используются динамические библиотеки:

  • jscript.dll — для языка Jscript
  • vbscript.dll — для языка VBScript

2.4. Установить в качестве сервера сценариев, используемого по умолчанию cscript.exe:

C:\ cscript.exe /H:CScript

После выполнения команды, отображается сообщение:

Используемый по умолчанию сервер сценариев: "cscript.exe".

Стандартно, сервером сценариев по умолчанию, является wscript.exe.

2.5. Выполнить сценарий hello1.vbs в интерактивном режиме:

C:\ cscript //I hello1.vbs

Сценарий будет выполнен с отображением сообщений и запросов пользователю ( противоположность параметру //B).

2.6. Выполнить задачу с идентификатором main, параметры которой описываются содержимым файла vcbp2vWrapper.wsf:

C:\ cscript //Job:main vcbp2vWrapper.wsf

2.7. Файл с параметрами задачи – это XML-файл, обрабатываемый сервером сценариев в соответствии с указанными XML — элементами. Обычно, файлы .wsf используются в тех случаях, когда необходимо в рамках одного сценария выполнить фрагменты исходного кода, написанные на разных языках программирования.

Например:

<job id=”main”>
<script language="VBScript">
Фрагмент на языке VBScript
</script>
<script language="JScript">
Фрагмент на языке JScript
</script>
</job>

В частности, использование задач .wsf продиктовано необходимостью реализации пользовательского ввода для сценариев на языке JScript. В реализации языка такой ввод отсутствует, но в VBScript есть функция InputBox которая как раз и позволяет это сделать. Обычно, в разделе на языке VBScript описывается пользовательская функция (например, InputString) для ввода значения посредством функции InputBox. А из раздела на языке JScript выполняется обращение к функции InputString так, как будто она была написана на этом же самом языке.

Пример сценария, в котором выполняется запрос пользователю на ввод данных в графическом окне и вывод введенных данных в консольном:

<job id=Str1>
<script language="VBScript">
Function InputString(StrWords) ' Описываем функцию на языке VBScript
InputString = InputBox(StrWords, "Вводимая строка данных")
End Function
</script>
<script language="JScript">
var OutString;
var queryString='Сообщение пользователю. Введите строку:';
OutString = InputString(queryString); //Вызываем функцию InputString
//Выводим значение переменной OutString на экран
WScript.Echo(”Введенная строка”+" - "+OutString+"!");
</script>
</job>


Выполнить задачу с идентификатором Str1 из файла hello1.wsf

C:\ cscript //Job:Str1 hello1.wsf

2.8. То же, что и в предыдущем примере, но на экране не будет отображаться информация о сервере сценариев:

C:\ cscript //Nologo //Job:Str1 hello1.wsf

По умолчанию – данная информация отображается.

Пример:

Сервер сценариев Windows (Microsoft ®) версия 5.812
Copyright (C) Корпорация Майкрософт 1996-2006, все права защищены.

2.9. Присвоить установкам сервера сценариев Windows значения по умолчанию

C:\ cscript //S

В справке, отображаемой по команде cscript /?, параметр //S трактуется как ”Сохранить для данного пользователя текущие параметры командной строки”, что не совсем верно. Попробуйте в качестве сервера сценариев по умолчанию задать cscript.exe, а затем выполните команду cscript //S, в результате чего, сервером сценариев по умолчанию снова станет wscript.exe

2.10. Аналогично рассмотренным выше примерам, но на выполнение сценария отводится 5 секунд:

C:\ cscript //Nologo //T:5 //Job:Str1 hello1.wsf

По истечении указанного времени сценарий будет принудительно завершен ( например, если пользователь не отвечает на запрос сценария).

2.11. Вывести результаты выполнения задачи в текстовый файл outfile.txt с использованием кодировки Юникод (Unicode):

C:\ cscript //U //Job:Str1 hello1.wsf > outfile.txt

Попробуйте выполнить эту команду без параметра //U и с вводом текста кириллицей – прочесть его, например, с помощью стандартного Блокнота, будет невозможно.