Monday, 29 March 2010

Windows Scripting Command Interpreter

Консольный интерпретатор JS/VBS-скриптов в автоматическом и интерактивном режимах.

Известно, что JScript и VBScript не имеют встроенных возможностей подключения внешних файлов (внешних скриптов, библиотек). Однако Windows Scripting технология позволяет сделать это с помощью специальных средств - XML-подобный файл, WSF, имеет возможность добавить внешние источники программного кода. Причем, можно смешивать код разных языков (по умолчанию доступны два - JScript и VBScript). тем не менее, требуется написание некоторого дополнительного кода по формированию правильного XML-кода.

Предлагаемое небольшое расширение позволяет запускать, компилировать любые JS/VBS-скрипты и формировать готовый WSF-файл, требующий незначительных изменений. Отличительной особенностью расширения является тот факт, что реализовано оно на двух языках: вызывающий скрипт - интерпретатор командной строки BAT, и исполняющая система JScript, внедренная с помощью несложных манипуляций для совместимости двух независимых языков (JS2BAT converter 2).
Интерактивный режим
После запуска доступна командная строка для ввода команд JScript.
wscmd
Плюсы:
  1. быстрый набор и выполнение команд;
  2. моментальный вывод результата работы введенной команды;
  3. ведение и сохранение истории введенных команд.
Минусы:
  1. возможно нарушение работы за счет переопределения некоторых объектов программы.
Автоматический режим - выполнение файла
Фактически является своего рода надстройкой над CSCRIPT.EXE - создает временный wsf-файл, указывает необходимые внешние библиотечные файлы и вызывает "главный" скрипт из полученного wsf-файла. По завершении выполнения временный файл удаляется.
wscmd filename
Плюсы:
  1. при создании некоторого скрипта, зависящего от других внешних библиотек нет нужды описывать WSF-контейнер, только "чистый" JScript-код;
  2. все внешние файлы добавляются автоматически - в момент создания временного wsf-файла.
Минусы:
  1. небольшое замедление, требуемое на "компиляцию" временного файла;
  2. создается временный файл.
Автоматический режим - выполнение строки кода
Имеется возможность выполнить некоторую строку кода, введенную в командной строке.
wscmd /e "WScript.Echo(Math.PI)"
Плюсы:
  1. нет необходимости в создании файла - код берется прямо из командной строки.
Минусы:
  1. ограничения командной строки DOS - строка ОБЯЗАТЕЛЬНО должна быть заключена в кавычки.
Конфигурирование
Конфигурирование осуществляется с помощью текстового файла wscmd.ini. Файл может располагаться в каталоге запуска wscmd.bat или текущем. Параметры задаются строкой вида имя=значение. Доступны следующие параметры:
  • include - список шаблонов подключаемых библиотечных файлов (по умолчанию - js\*.js, js\win32\*.js, vbs\win32\*.vbs, относительно запускаемого файла wscmd.bat)
  • execute - имя временного файла (по умолчанию - $$$wscmd.wsf, относительно текущего каталога)
  • command - команда запуска (cscript //NoLogo)
Разрешены следующие макроподстановки:
  • %~d0 - имя диска
  • %~p0 - путь
  • %~n0 - имя файла
  • %~x0 - расширение
Дополнительные опции
  • /JS - рассматривать источник как JScript-код
  • /VBS - рассматривать источник как VBScript-код
  • /COMPILE - "компилировать", но не выполнять, результирующий временный файл сохраняется на диск с именем, определенным в execute
  • /DEBUG - "скомпилировать" и выполнить, вывести отладочную информацию (список подключенных файлов библиотек)
"Скомпилировать" vbs-файл
wscmd /compile /vbs filename.vbs
Перед выполнением строки кода вывести отладочную информацию (список внешних файлов)
wscmd /debug /vbs /e "print(Math.PI)"
Исходный код
Исходный код доступен - wscmd.bat :: google.code. Скачать файл wscmd.bat и сохранить в любом удобном месте.

No comments:

Post a Comment