Чтение онлайн

ЖАНРЫ

Windows Script Host для Windows 2000/XP

Попов Андрей Викторович

Шрифт:

' окно Блокнота успело появиться на экране

WScript.Sleep 1000

WshShell.AppActivate "notepad" ' Активизируем окно Блокнота

' Посылаем нажатия клавиш в окно Блокнота

WshShell.SendKeys "1{+}2="

' Вставляем содержимое буфера Windows (<Ctrl>+V)

WshShell.SendKeys "^v"

' Выводим в окно Блокнота оставшуюся информацию

WshShell.SendKeys " {(}c{)} Calculator"

'*************
Конец *********************************************
 

Запуск независимых консольных приложений и команд DOS

Для запуска независимых, т.е. работающих в отдельном адресном пространстве и использующих свою копию переменных среды, консольных приложений или внешних (представленных исполняемыми файлами на жестком диске) команд DOS используется метод

Run
объекта
WshShell
. При этом выполнение сценария можно приостановить до окончания работы запущенного приложения, а затем проанализировать код выхода этого приложения (для этого третий параметр метода
Run
должен равняться
true
). Соответствующие примеры сценариев на языках JScript и VBScript приведены в листингах 2.32 и 2.33 соответственно.

Листинг 2.32. Запуск независимого консольного приложения (JScript)

/*******************************************************************/

/* Имя: RunConApp.js */

/* Язык: JScript */

/* Описание: Запуск независимого консольного приложения и */

/* определение его кода выхода */

/*******************************************************************/

var WshShell, Code; //Объявляем переменные

//Создаем объект WshShell

WshShell = WScript.CreateObject("WScript.Shell");

//Запускаем утилиту xcopy с ключом "/?" и ожидаем окончания ее работы

Code=WshShell.Run("xcopy /?",1,true);

//Печатаем полученный код возврата

WScript.Echo("Код возврата: ", Code);

/************* Конец *********************************************/

Листинr 2.33. Запуск независимого консольного приложения (VBSсript)

'*******************************************************************

' Имя: RunConApp.vbs

' Язык: VBScript

' Описание: Запуск независимого консольного приложения и

' определение его кода выхода

'*******************************************************************

Option Explicit

Dim WshShell, Code ' Объявляем переменные

' Создаем объект WshShell

Set WshShell = WScript.CreateObject("WScript.Shell")

' Запускаем утилиту xcopy с ключом "/?" и ожидаем окончания
ее работы

Code=WshShell.Run("xcopy /?",1,true)

' Печатаем полученный код возврата

WScript.Echo "Код возврата: ", Code

'************* Конец *********************************************/

Для выполнения внутренней команды DOS нужно запустить командный интерпретатор (в Windows NT/2000/XP это файл cmd.exe, в Windows9х — command.com) и передать ему в качестве параметра нужную команду. Для того чтобы при вызове командного интерпретатора не заботиться о полном пути к cmd.exe, нужно использовать переменную среды

COMSPEC
.

Замечание

Для получения значения переменной среды ее имя нужно окружить знаками "%" (например,

%COMSPEC%
).

В листингах 2.34 и 2.35 приведены сценарии на языках JScript и VBScript, в которых запускаются внутренние команды

COPY /?
(вызов встроенной справки для сору) и
DIR %WINDIR%
(вывод содержимого системного каталога Windows).

При этом окно, в котором выполняется команда

COPY /?
, не закрывается после завершения этой команды, т.к. при запуске командного интерпретатора был указан ключ /k, а информация, выводимая командой DIR %WINDIR%, перенаправляется в файл windir.txt, после чего командное окно закрывается, т.к. для командного интерпретатора в этом случае был указан ключ
.

Листинг 2.34. Доступ к параметрам командной строки запущенного сценария (JScript)

/*******************************************************************/

/* Имя: RunDOSCom.js */

/* Язык: JScript */

/* Описание: Выполнение внутренних команд DOS */

/*******************************************************************/

var WshShell, Code; //Объявляем переменные

//Создаем объект WshShell

WshShell = WScript.CreateObject("WScript.Shell");

//Запускаем внутреннюю команду COPY

WshShell.Run("%COMSPEC% /k copy /?",1);

//Запускаем внутреннюю команду DIR

WshShell.Run("%COMSPEC% /c dir %WINDIR% > windir.txt",1);

/************* Конец *********************************************/

Листинг 2.35. Доступ к параметрам командной строки запущенного сценария (VBScript)

'*******************************************************************

' Имя: RunDOSCom.vbs

' Язык: VBScript

' Описание: Выполнение внутренних команд DOS

'*******************************************************************

Option Explicit

Dim WshShell, Code ' Объявляем переменные

Поделиться с друзьями: