- WScript
- FileSystemObject
- Drive
- File
- Folder
- TextStream
- Shell
- WshNetwork
- WshShell
- Wsh[Url]Shortcut
- WshScriptExec
- ADOStreamObject
- HTA
- CMD
- uconv
- Enumerator
- Источник
Объект WshShell
С помощью объекта WshShell можно запускать новый процесс, создавать ярлыки, работать с системным реестром, получать доступ к переменным среды и специальным папкам Windows. Создается этот объект следующим образом:
var WshShell=WScript.CreateObject("WScript.Shell");
Свойства | |
CurrentDirectory | Возвращает строку, путь к текущему каталогу. |
Environment | Возвращает объект, который позволяет получить значения переменных среды |
SpecialFolders | Возвращает полный путь к специальным папкам типа меню Пуск. |
Методы | |
AppActivate | Активизирует указанное окно приложения. |
CreateShortcut | Создает ярлыки файлов или URL |
Exec | Создаёт дочерний процесс, который запускает заданное приложение. |
ExpandEnvironmentStrings | Возвращает значение переменной среды текущего командного окна. |
LogEvent | Позволяет записать сообщение в event log. |
Popup | Выводит на экран модальное окно сообщения. |
Run | Создаёт новый независимый процесс, который запускает заданное приложение. |
RegRead | Возвращает значение ключа или записи реестра по его имени |
RegWrite | Создает новые ключ или запись реестра или записывает новое значение существующих. |
RegDelete | Удаляет ключ или запись реестра |
SendKeys | Позволяет эмулировать клавиатурный ввод. |
CurrentDirectory
Синтаксис
// Свойство. Чтение и запись. WshShell.CurrentDirectory
Возвращаемое значение
Строка, путь к текущему каталогу.
Пример
var WshShell = WScript.CreateObject("WScript.Shell") WScript.Echo ( WshShell.CurrentDirectory );
Environment
Синтаксис
// Свойство. Чтение и запись. В коллекцию можно добавлять элементы и удалять их. WshShell.Environment ( [sType] )
Возвращаемое значение
Объект-коллекция WshEnvironment, содержащая переменные среды. Необязательный параметр sType - строка, задаёт вид переменных. Возможные значения:
- "System" - переменные среды операционной системы (по умолчанию).
- "User" - переменные среды пользователя.
- "Volatile" - временные переменные.
- "Process" - переменные среды текущего командного окна.
Если sType не указан, этот метод получает системные переменные в Windows.
Следующие переменные предоставляются операционной системой Windows. Скрипты могут также получить переменные окружения, которые были установлены другими прикладными программами.
Название | Описание |
---|---|
NUMBER_OF_PROCESSORS | Число процессоров, используемых в компьютере. |
PROCESSOR_ARCHITECTURE | Тип процессора автоматизированного рабочего места пользователя. |
PROCESSOR_IDENTIFIER | Идентификатор процессора автоматизированного рабочего места пользователя. |
PROCESSOR_LEVEL | Уровень процессора автоматизированного рабочего места пользователя. |
PROCESSOR_REVISION | Версия процессора автоматизированного рабочего места пользователя. |
OS | Операционная система на автоматизированном рабочем месте пользователя. |
COMSPEC | Выполнимая программа для команды command prompt (обычно cmd.exe). |
HOMEDRIVE | Первичный локальный диск (обычно диск C). |
HOMEPATH | Основной каталог для пользователей по умолчанию (для Windows NT это - обычно \users\default. |
PATH | Переменная окружения PATH. |
PATHEXT | Расширения для исполняемых файлов (обычно .com, .exe, .bat, или .cmd). |
PROMPT | Командная строка (обычно $P$G). |
SYSTEMDRIVE | Локальный диск, на котором находится системный каталог (например, c:\). |
SYSTEMROOT | Каталог ОС (например, c:\winnt). Аналогичен WINDIR. |
WINDIR | Каталог ОС (например, c:\winnt). Аналогичен SYSTEMROOT. |
TEMP | Каталог для хранения временных файлов (например, c:\temp). User, Volatile |
TMP | Каталог для хранения временных файлов (например, c:\temp). User, Volatile |
Объект WshEnvironment
Объект WshEnvironment позволяет получить доступ к коллекции, содержащей переменные среды заданного типа (переменные среды операционной системы, переменные среды пользователя или переменные среды текущего командного окна). Объект имеет три свойства и один метод:
ItemСвойство Item устанавливает или возвращает значение (strValue) переменной окружения strName. Это свойство - используется по умолчанию:
Count
WshEnvironment.Item ( strName ) [ = strValue ] WshEnvironment ( strName ) = [ strValue ]
Свойство Count предоставляет количество перечисленных элементов:
length
WshEnvironment.Count
Свойство length предоставляет количество перечисленных элементов. Это свойство обеспечивает ту же функциональность, что и
Remove()
Count
и введено только для совместимости с JScript
.
WshEnvironment.length
Метод Remove() удаляет переменную окружения, определяемую strName
WshEnvironment.Remove(strName)
Примеры
var WshShell = WScript.CreateObject("WScript.Shell") var WshEnv = WshShell.Environment; WScript.Echo ( WshEnv.Item("WINDIR") ); // Определить системную переменную NUMBER_OF_PROCESSORS var WshSysEnv = WshShell.Environment("SYSTEM"); WScript.ECHO ( WshSysEnv ("NUMBER_OF_PROCESSORS") );
// Удалить несколько переменных var WshUsrEnv = Wscript.Environment("User"); WshUsrEnv.Remove("EXAMPLE_1"); WshUsrEnv.Remove("EXAMPLE_2"); WshUsrEnv.Remove("EXAMPLE_3"); WshUsrEnv.Remove("EXAMPLE_4")
// Установить переменной окружения EXAMPLE значение A_VALUE var WshShell = WScript.CreateObject("Wscript.Shell"); var WshEnv = WshShell.Environment("VOLATILE"); WshEnv("EXAMPLE") = "A_VALUE"; // Отобразить весь список временных переменных окружения var e = new Enumerator ( WshShell.Environment("VOLATILE") ); var s=''; for (e.moveFirst(); !e.atEnd(); e.moveNext()) s += e.item() + '\n'; WScript.Echo (s); // Удалить переменную окружения EXAMPLE WshShell.Environment("VOLATILE").Remove("EXAMPLE");
SpecialFolders
Синтаксис
// Свойство. Только чтение. WshShell.SpecialFolders [( НаименованиеСпециальнойПапки )]
Возвращаемое значение
Объект-коллекция WshSpecialFolders, содержащая пути к специальным папкам Windows. Некоторые специальные папки:
- AllUsersDesktop
- AllUsersStartMenu
- AllUsersPrograms
- AllUsersStartup
- Desktop
- Favorites
- Fonts
- MyDocuments
- NetHood
- PrintHood
- Programs
- Recent
- SendTo
- StartMenu
- Startup
- Template
Объект-коллекция WshSpecialFolders
Объект имеет три свойства:
ItemСвойство Item возвращает полный путь к специальной папке, определяемой strFolderName. Это свойство - используется по умолчанию:
Count
WshShell.SpecialFolders.Item("strFolderName") WshShell.SpecialFolders("strFolderName")
Свойство Count предоставляет количество перечисленных элементов:
length
WshShell.SpecialFolders.Count
Свойство length предоставляет количество перечисленных элементов. Это свойство обеспечивает ту же функциональность, что и
Count
и введено только для совместимости с JScript
.
WshShell.SpecialFolders.length
Пример
var WshShell = WScript.CreateObject("WScript.Shell"); // возвращает полный путь к папке рабочего стола Windows var StrMyDesktop = WshShell.SpecialFolders; WScript.Echo ( StrMyDesktop.Item("Desktop") + '\n' + WshShell.SpecialFolders("Desktop") ); // Для сравнения // Перечислить все специальные папки var s='', e = new Enumerator ( WshShell.SpecialFolders ); for (e.moveFirst(); !e.atEnd(); e.moveNext()) s += e.item() + '\n'; WScript.Echo (s);
AppActivate()
Метод AppActivate() активизирует указанное окно какого-либо приложения. Возвращает true
в случае успеха и false
в случае неудачи.
Синтаксис
WshShell.AppActivate( Title )
Параметры
- Title
- Заголовок окна приложения или идентификатор процесса.
Комментарии
Если в качестве параметра указан заголовок окна приложения, значение параметра сравнивается по очереди с заголовками окон всех запущенных приложений. Если не найдено ни одного точного совпадения, будет производиться поиск окна, заголовок которого начинается с указанной строки. Если и в этом случае не будет найдено ни одного подходящего окна, будет производиться поиск окна, заголовок которого заканчивается на указанную строку. Если будет найдено несколько подходящих окон, произойдёт активизация одного из них (произвольно).
Пример
var WshShell = WScript.CreateObject("WScript.Shell"); var WshExec = WshShell.Exec("calc"); WScript.Sleep (2000); var Res = WshShell.AppActivate(WshExec.ProcessID); if ( Res ) WshShell.SendKeys("2*2=");
В приведенном примере запускается калькулятор, его окно помещается в топ активных и моделируется ввод с клавиатуры в активное окно.
CreateShortcut()
Метод CreateShortcut() возвращает объект WshShortcut или WshURLShortcut, указывающий на ярлык .lnk или .url.
Синтаксис
WshShell.CreateShortcut( Path )
Параметры
- Path
- Строка, полный путь к создаваемому или изменяемому файлу ярлыка.
Пример
var WshShell = WScript.CreateObject("WScript.Shell"); var WshURLShortcut = WshShell.CreateShortcut("C:\Microsoft.url"); WshURLShortcut.TargetPath = "http://microsoft.com"; WshURLShortcut.Save();
Exec()
Метод Exec() создаёт новый дочерний процесс (т.е. процесс с теми же переменными среды), который запускает заданное консольное приложение. Возвращается объект "WshScriptExec, который позволяет контролировать ход выполнения запущенного приложения и обеспечивает доступ к потокам StdIn, StdOut и StdErr этого приложения.
Синтаксис
WshShell.Exec( Command )
Параметры
- Command
- Строка, командная строка запуска приложения.
Комментарии
С помощью данного метода можно запускать и графические оконные приложения. В этом случае возвращаемый объект WshScriptExec
полезен тем, что позволяет получить идентификатор запущенного процесса, который можно использовать, например, для активизации приложения с помощью метода AppActivate.
Примеры
var WshShell = WScript.CreateObject("WScript.Shell") var WshExec = WshShell.Exec("nslookup 127.0.0.1") WScript.Sleep (7000); var TextStream = WshExec.StdOut; var s=''; while(!TextStream.AtEndOfStream) { s += TextStream.ReadLine()+'\n'; } WScript.Echo ( s );
var WshShell = WScript.CreateObject("WScript.Shell"); var WshExec = WshShell.Exec("notepad"); WScript.Sleep (2000); WshShell.AppActivate(WshExec.ProcessID); WshShell.SendKeys ("0123456789");
ExpandEnvironmentStrings()
Метод ExpandEnvironmentStrings() возвращает значение переменной среды текущего командного окна.
Синтаксис
WshShell.ExpandEnvironmentStrings( String )
Параметры
- String
- Строка, имя переменной. Должно быть окружено знаками "%".
Пример
var WshShell = WScript.CreateObject("WScript.Shell"); WScript.Echo ( WshShell.ExpandEnvironmentStrings("%WinDir%") );
LogEvent()
Метод LogEvent() протоколирует событие в журнале Windows. Возвращает true
в случае успеха и false
в противном случае.
Синтаксис
WshShell.LogEvent( Type, Message, Target )
Параметры
- Type
- Число, тип сообщения. Возможные значения:
- 0 - SUCCESS
- 1 - ERROR
- 2 - WARNING
- 4 - INFORMATION
- 8 - AUDIT_SUCCESS
- 16 - AUDIT_FAILURE
- Message
- Строка, текст сообщения.
- Target
- Строка, название системы, в которой протоколируется событие (по умолчанию - локальная система).
Пример
var WshShell = WScript.CreateObject("WScript.Shell") WshShell.LogEvent (4, "Test event!")
Popup()
Метод Popup() выводит на экран модальное окно сообщения.
Синтаксис
WshShell.Popup( Text, SecondsToWait, Title, Type )
Параметры
- Text
- Строка, текст сообщения.
- SecondsToWait
- Необязательный, число. Количество секунд, по истечении которого окно будет автоматически закрыто.
- Title
- Необязательный, строка. Текст заголовка окна сообщения.
- Type
- Необязательный, число. Комбинация флагов, определяет тип кнопок и значка. Возможные значения флагов:
- 0 - кнопка ОК.
- 1 - кнопки ОК и Отмена.
- 2 - кнопки Стоп, Повтор, Пропустить.
- 3 - кнопки Да, Нет, Отмена.
- 4 - кнопки Да и Нет.
- 5 - кнопки Повтор и Отмена.
- 16 - значок Stop.
- 32 - значок Question.
- 48 - значок Exclamation.
- 64 - значок Information.
Комментарии
Возвращает целое значение, с помощью которого можно узнать, какая кнопка быля нажата пользователем. Возможные значения:
- -1 - таймаут.
- 1 - кнопка ОК.
- 2 - кнопка Отмена.
- 3 - кнопка Стоп.
- 4 - кнопка Повтор.
- 5 - кнопка Пропустить.
- 6 - кнопка Да.
- 7 - кнопка Нет.
- 10 - кнопка Try Again.
- 11 - кнопка Continue.
Пример
var WshShell = WScript.CreateObject("WScript.Shell"); WScript.Echo( WshShell.Popup ("Текст сообщения", 7, "Текст заголовка", 4+16) );
RegDelete()
Метод RegDelete() удаляет из реестра заданный параметр или раздел целиком.
Синтаксис
WshShell.RegDelete( Name )
Параметры
- Name
- Строка, наименование параметра или раздела.
Комментарии
Если "Name" оканчивается символом "\", метод удаляет ключ целиком, в противном случае удаляется параметр. Параметр "Name" должен начинаться с одного из корневых ключей:
- HKEY_CURRENT_USER - HKCU
- HKEY_LOCAL_MACHINE - HKLM
- HKEY_CLASSES_ROOT - HKCR
- HKEY_USERS - HKEY_USERS
- HKEY_CURRENT_CONFIG - HKEY_CURRENT_CONFIG
Пример
var WshShell = WScript.CreateObject("WScript.Shell"); WshShell.RegWrite ("HKCU\\NewKeyS\\","Value"); WshShell.RegWrite ("HKEY_CURRENT_USER\\NewKeyS\\Param","Value","REG_SZ"); WScript.Echo ( WshShell.RegRead("HKEY_CURRENT_USER\\NewKeyS\\Param") + '\n' + WshShell.RegRead("HKEY_CURRENT_USER\\NewKeyS\\") ); WshShell.RegDelete ("HKEY_CURRENT_USER\\NewKeyS\\Param"); WshShell.RegDelete ("HKEY_CURRENT_USER\\NewKeyS\\");
RegRead()
Метод RegRead() читает из реестра заданный параметр или значение по умолчанию для раздела.
Синтаксис
WshShell.RegRead( Name )
Параметры
- Name
- Строка, наименование параметра или раздела.
Комментарии
Если "Name" оканчивается символом "\", метод считывает значение по умолчанию для раздела, в противном случае считывается параметр. Параметр "Name" должен начинаться с одного из корневых ключей:
- HKEY_CURRENT_USER - HKCU
- HKEY_LOCAL_MACHINE - HKLM
- HKEY_CLASSES_ROOT - HKCR
- HKEY_USERS - HKEY_USERS
- HKEY_CURRENT_CONFIG - HKEY_CURRENT_CONFIG
Пример
var WshShell = WScript.CreateObject("WScript.Shell"); WshShell.RegWrite ("HKCU\\NewKeyS\\","Value"); WshShell.RegWrite ("HKEY_CURRENT_USER\\NewKeyS\\Param","Value","REG_SZ"); WScript.Echo ( WshShell.RegRead("HKEY_CURRENT_USER\\NewKeyS\\Param") + '\n' + WshShell.RegRead("HKEY_CURRENT_USER\\NewKeyS\\") ); WshShell.RegDelete ("HKEY_CURRENT_USER\\NewKeyS\\Param"); WshShell.RegDelete ("HKEY_CURRENT_USER\\NewKeyS\\");
RegWrite()
Метод RegWrite() записываает в реестр заданный параметр или раздел.
Синтаксис
WshShell.RegWrite( Name, Value, Type )
Параметры
- Name
- Строка, наименование параметра или раздела.
- Value
- Значение параметра или значение для раздела по умолчанию.
- Type
- Необязательный, тип значения. Возможные значения:
- REG_SZ - Строка
- REG_DWORD - Число
- REG_BINARY - Массив чисел
- REG_EXPAND_SZ - Строка расширяемая, например,"%windir%\\calc.exe"
- REG_MULTI_SZ - Массив строк
Комментарии
Если "Name" оканчивается символом "\", метод записывает раздел, в противном случае записывается параметр. Параметр "Name" должен начинаться с одного из корневых ключей:
- HKEY_CURRENT_USER - HKCU
- HKEY_LOCAL_MACHINE - HKLM
- HKEY_CLASSES_ROOT - HKCR
- HKEY_USERS - HKEY_USERS
- HKEY_CURRENT_CONFIG - HKEY_CURRENT_CONFIG
Пример
var WshShell = WScript.CreateObject("WScript.Shell"); WshShell.RegWrite ("HKCU\\NewKeyS\\","Value"); WshShell.RegWrite ("HKEY_CURRENT_USER\\NewKeyS\\Param","Value","REG_SZ"); WScript.Echo ( WshShell.RegRead("HKEY_CURRENT_USER\\NewKeyS\\Param") + '\n' + WshShell.RegRead("HKEY_CURRENT_USER\\NewKeyS\\") ); WshShell.RegDelete ("HKEY_CURRENT_USER\\NewKeyS\\Param"); WshShell.RegDelete ("HKEY_CURRENT_USER\\NewKeyS\\");
Run()
Метод Run() создаёт новый независимый процесс, который запускает заданное приложение.
Синтаксис
WshShell.Run( Command, WindowStyle, WaitOnReturn )
Параметры
- Command
- Строка, командная строка запуска приложения.
- WindowStyle
- Необязательный, число. Определяет вид окна запускаемого приложения. Некоторые возможные значения:
- 0 - Не отображает окно.
- 1 - Активизирует и отображает окно.
- 2 - Активизирует окно и отображает его в свёрнутом виде.
- 3 - Активизирует окно и отображает его в максимизированном виде.
- 4 - Отображает окно в его последнем виде (размер и положение). Активное окно остается активным.
- 5 - Активизирует окно и отображает его в текущем размере и позиции.
- 6 - Сводит к минимуму указанное окно и активирует следующее окно верхнего уровня в Z порядке.
- 7 - Отображает окно в минимальном виде. Активное окно остается активным.
- 8 - Отображает окно в его текущем состоянии. Активное окно остается активным.
- 9 - Активизирует и отображает окно. Если окно свернуто или развернуто, система восстанавливает его исходный размер и положение. Приложение должно указывать этот флаг при восстановлении свернутого окна.
- WaitOnReturn
- Необязательный, булево (число).
true
- сценарий возобновит работу только после завершения вызванного процесса.false
(по умолчанию) - управление передаётся сразу обратно в сценарий.
Комментарии
Если параметр "WaitOnReturn" установлен в true
, метод возвращает код выхода вызванного приложения. Иначе метод всегда возвращает ноль.
Пример
var WshShell = WScript.CreateObject("WScript.Shell"); WshShell.Run ('explorer "C:\Program Files"');
Другой пример:
var WshShell = WScript.CreateObject("WScript.Shell") var RetCode = WshShell.Run("notepad", 1, True) WScript.Echo ( "Обработка завершена! Код возврата - " & RetCode );
SendKeys()
Метод SendKeys() посылает одно или несколько нажатий клавиш в активное окно (имитация набора на клавиатуре).
Синтаксис
WshShell.SendKeys( String )
Параметры
- String
- Строка, перечень клавиш в специальном формате.
Комментарии
Каждая клавиша задаётся своим символом. Например, чтобы задать нажатие друг за другом клавиш А, Б и В, нужно указать в качестве параметра строку "АБВ". Некоторые специальные символы следует всегда задавать заключёнными в фигурные скобки. Перечень таких символов:
{+} {^} {%} {~} {(} {)} {[} {]} {{} {}}
Задание неотображаемых символов и специальных клавиш:
Ключ | Аргумент |
---|---|
BACKSPACE | {BACKSPACE}, {BS}, или {BKSP} |
BREAK | {BREAK} |
CAPS LOCK | {CAPSLOCK} |
DEL или DELETE | {DELETE} или {DEL} |
DOWN ARROW | {DOWN} |
END | {END} |
ENTER | {ENTER} или ~ |
ESC | {ESC} |
HELP | {HELP} |
HOME | {HOME} |
INS или INSERT | {INSERT} или {INS} |
LEFT ARROW | {LEFT} |
NUM LOCK | {NUMLOCK} |
PAGE DOWN | {PGDN} |
PAGE UP | {PGUP} |
PRINT SCREEN | {PRTSC} |
RIGHT ARROW | {RIGHT} |
SCROLL LOCK | {SCROLLLOCK} |
TAB | {TAB} |
UP ARROW | {UP} |
F1 | {F1} |
F2 | {F2} |
F3 | {F3} |
F4 | {F4} |
F5 | {F5} |
F6 | {F6} |
F7 | {F7} |
F8 | {F8} |
F9 | {F9} |
F10 | {F10} |
F11 | {F11} |
F12 | {F12} |
F13 | {F13} |
F14 | {F14} |
F15 | {F15} |
F16 | {F16} |
Для отправки символов, которые состоят из клавиши в сочетании с SHIFT, CTRL или ALT, создайте составной строковый аргумент, представляющий комбинацию клавиш.
Ключ | Специальные символы |
---|---|
SHIFT | + |
CTRL | ^ |
ALT | % |
При использовании таким образом, эти специальные символы не заключаются в пару фигурных скобок.
Например, для отправки сочетания клавиш Ctrl + X аргумент будет ^ X.
При использовании специальных символов допустимо использовать группировки.
Так, +(GH) отправит знак G при нажатой клавише SHIFT, а затем знак H при нажатой клавише SHIFT.
А + GH отправит знак G при нажатой клавише SHIFT, а затем знак H, но уже без нажатой клавише SHIFT.
Для не специальных символов можно указывать количество повторений. Так, {х 10} передаст нажатие клавиши x подряд 10 раз. Наличие пробела между символом и количеством повторений обязательно.
Можно отправить "х" в десять раз, но нельзя сделать то же самое для составных символов, например, "Ctrl + X" использую предыдущий шаблон.
Нельзя отправить ключ PRINT SCREEN {PRTSC} к приложению.
Пример
var WshShell = WScript.CreateObject("WScript.Shell"); WshShell.SendKeys {"^{ESC}"}