CScript

Сервер сценариев Windows поддерживает сценарии, написанные в редакторах VBScript и Jscript.

Использование:

CScript имя_сценария. [параметры_сервера...] [аргументы...]

имя_сценария — имя файла сценария, включая путь и расширение.
параметры_сервера — ключи командной строки, задающие различные свойства сервера сценариев Windows.
Параметр сервера всегда начинается с двух косых черт (//).
 

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

 

Примечания

  • Все параметры являются необязательными, однако нельзя задать аргументы сценария, не задав сценарий. При отсутствии сценария программа Cscript.exe выведет описание синтаксиса команды и предусмотренные ключи ( аналогично параметру //?).
  • Параметр времени ожидания (//T:nnnnn) ограничивает максимальное время выполнения сценария. Можно указать значение времени до 32 767 секунд. По умолчанию время выполнения не ограничено. Если время выполнения превышает заданную величину, Cscript.exe прерывает работу обработчика и останавливает процесс.
  • Расширения файлов (.vbs для VBScript и .js для JScript) используются в обработчике сценариев для определения языка сценария.
  • Параметр //Logo, используемый по умолчанию, сделает вас счастливым свидетелем отображения на экране надписи что-то вроде этой:
    Сервер сценариев Windows (Microsoft R) версия 5.7
    Корпорация Майкрософт (Microsoft Corp.), 1996-2001. Все права защищены.

    Если вы хотите лишить себя такого счастья - можете использовать параметр //Nologo.

Скрипт (JS или VBS) может быть выполнен сам по себе, ему могут быть переданы параметры из bat / cmd файла, и, наконец, используя несложные приемы можно получить обратно в bat / cmd файл результаты работы скрипта.
Рассмотрим сразу случай, когда данные передаются скрипту и результат обработки получают обратно в bat / cmd файле. Возможно вы будете удивлены легкости решения этой задачи.
 

set qq=1q2w3e4r cscript //nologo strlen.js %qq% for /F "usebackq" %%i in (`cscript //nologo strlen.js "%qq%"`) do set /A myvar=%%i echo length str %myvar%


Переменная qq содержит ваш пароль? Да, я подсматривал...
А вот и содержимое файла strlen.js:
 

//JScript var Args = WScript.Arguments; WScript.Echo(Args(0).length);


Приведенный выше скрипт возвращает длину строковой переменной, переданную ему как параметр.
То, что в скрипт могут быть переданы аргументы, мы уже рассматривали в синтаксисе cscript (см. выше).
Для получения данных из скрипта используется прием, рассмотренный в разделе ПРИМЕРЫ этого проекта на странице Анализ результатов работы команды, программы.
Код JavaScript (точнее, JScript) содержит извлечение аргумента, обращение к функции и вывод значения.
Небольшое отступление.
Когда я писал скрипт, то при вызове strlen.js не заключил аргумент в кавычки. При работе в большинстве случаев результат был правильным, но иногда и нет. Это сейчас все кажется понятным. А тогда поиск ошибки занял немало времени. Да и в таком варианте если строка сама содержит кавычки, то результат ее вам может не понравиться
Аналогичным образом можно обращаться и к другим функциям языка, значительно расширив таким образом возможности bat / cmd программ. Например, использовать для обработки регулярные выражения.
 

function trimStr (s) { s = s.replace(/^\s+/, ''); for (var i = s.length - 1; i >= 0; i--) { if (/\S/.test(s.charAt(i))) { s = s.substring(0, i + 1); break; } } return s; } var Args = WScript.Arguments; WScript.Echo(trimStr(Args(0)));



В данном случае использовалась процедура удаления ведущих и замыкающих пробелов у строковой переменной.
(В разделе ПРИМЕРЫ этого проекта на странице Примеры работы со строками в bat/cmd файлах приведена моя функция для этих же целей, как мне кажется, более эффективная. Здесь же использовалась функция специально использующая регулярные выражения)
Кроме того, это можно рассматривать и как пример использования собственных функций на JScript.
Пример обращения к такой функции:
 

set "qq= Контуженный информационным взрывом " for /F "usebackq delims=" %%i in (`cscript //nologo trimstr.js "%qq%"`) do set myvar=%%i echo trim str %myvar%


И еще один пример.
 

set qq=d: for /F "usebackq tokens=1,2,3" %%i in (`cscript //nologo spacedrv.js %qq%`) do ( echo drive: %qq% echo TotalSize: %%i echo FreeSpace: %%j echo FileSystem: %%k )



И сам скрипт spacedrv.js:
 

var Args = WScript.Arguments; if (Args.length == 0) drv="c:"; else drv=Args(0); var fso = new ActiveXObject("Scripting.FileSystemObject"); var fdrv = fso.GetDrive(drv); WScript.Echo(fdrv.TotalSize+ " "+fdrv.FreeSpace+" "+fdrv.FileSystem);



В результате выполнения этого скрипта вы узнаете общий объем диска, свободное пространство на нем и тип файловой системы.
Здесь использовалась объектная модель сервера, речь о которой будет ниже.
Интерес в этом примере может представлять то, что JScript возвращает в bat / cmd файл сразу 3 значения.

Одно только такое использование значительно расширяют возможности bat / cmd файлов.
В вашем арсенале теперь есть возможности более мощного языка.
Стали доступны не только встроенные функции на JS или VBS, но и множество библиотек и функций на этих языках, которые без особого труда можно найти в сети.

Но при использовании cscript дополнительно доступны несколько классов со своими свойствами и методами.
Они раскрывают новые возможности. Или, говоря пафосно, новые горизонты.
Это довольно большой объем информации, и здесь будет сделана попытка кратко его изложить на отдельных страницах в рамках этого проекта. Хотя возможно, это будет и отдельный проект.

Очень кратко, обзорно, объектная модель сервера сценариев Windows представлена здесь. Следует отметить, что на этой странице рассматриваются далеко не все объекты, доступные для использования в cscript.

Работе с аргументами посвящена специальная страница.

Для работы с коллекциями часто используется Объект Enumerator

Отдельно объект FileSystemObject рассмотрен здесь. Несмотря на то, что что этот объект рассмотрен не очень подробно, исходный код страницы превысил две с половиной тысячи строк.

Объект WshNetwork - работа с сетевым окружением - краткое описание с примерами здесь.

WSH скрипты. Полезное - здесь.

Как объединить BAT/CMD и JSCRIPT в один файл описано здесь.

Отдельная страница посвящена различным примерам использования скриптов.


По мере возможности, желания и расположения Светил эти страницы будут пополняться и создаваться новые.

Категория: Команды | Добавил: masterov (08.10.2017) E W
Просмотров: 16 | Теги: команда, cmd, консоль | Рейтинг: 0.0/0
Всего комментариев: 0
avatar