Содержание
- Автоматизация задач с помощью скриптов. Интересные возможности WSH
- Основы языка JScript — написание WSH скриптов
- Что такое Windows Script Host?
- Примеры написания WSH скриптов
- Windows Script Host (WSH)

Листинг файла dragndrop.vbs
Автоматизация задач с помощью скриптов. Интересные возможности WSH
Пожалуй, многие знают, что Windows начиная с версии 98 имеет по умолчанию в своем составе Windows Script Host (WSH), который позволяет исполнять скрипты на языках VBScript и JScript, но далеко не каждый хотя бы раз пользовался этой возможностью. В этой статье я приведу примеры полезных сниппетов и скриптов для WSH и попробую убедить вас в том, что вещь это действительно стоящая. Я также расскажу об очень занимательных и полезных возможностях WSH, о которых практически никто не знает, и информацию о которых в интернете найти весьма непросто.
Для начала немного о языках, поддерживающихся WSH. JScript — это, по сути, JavaScript с несколько измененной объектной моделью (например, в нем нет объекта window, как в браузерах, зато добавлен объект WScript, позволяющий взаимодействовать со средой, в которой исполняется скрипт). VBScript базируется на синтаксисе и возможностях Visual Basic 6 (и, возможно, более ранних версий). Оба языка имеют приблизительно одинаковые возможности.
Кроме того, можно установить и другие языки для WSH, например, PerlScript, который, как вы уже догадались, базируется на Perl’е. Для этого следует воспользоваться, например, инсталлятором ActiveState Perl:

В Windows по умолчанию расширение файла .js ассоциировано с JScript-скриптами, .vbs — с VBScript. При установке PerlScript появляется ассоциация .pls — с PerlScript-скриптами. Скрипты js и vbs можно закодировать с помощью утилиты от Microsoft screnc.exe, получив на выходе файл с расширением .jse или .vbe, соответственно. К сожалению, такое кодирование защитит лишь от неопытных пользователей — множество раскодировщиков можно найти в Google.
Кроме того, при закодировании бывают проблемы с русским текстом.
Еще одной замечательной особенностью WSH является то, что он позволяет комбинировать все установленные в системе скриптовые языки в одном файле с расширением .wsf. Например, VBScript предоставляет функцию, отображающую окошко для ввода текста (InputBox), и она вам очень нужна, но скрипт свой вы пишете на JScript, который такой функцией не располагает. Решается проблема очень просто — создать файл wsf со следующим содержанием:
Основы языка JScript — написание WSH скриптов
Сегодня поговорим об очень полезном компоненте операционной системы Windows — это Windows Script Host, если быть конкретней, то о языке Jscript, на котором можно писать эти самые WSH скрипты.
Начнем мы с небольшой теории, так как мы еще не затрагивали Windows Script Host.
Что такое Windows Script Host?
Windows Script Host – сервер выполнения сценариев (скриптов) на таких языках как VBScript и JScript. WSH разработан компанией Microsoft и он является компонентом операционной системы Windows начиная с Windows 98.
Первоначально для администрирования использовались только bat-файлы, но их возможности ограничены (хотя также очень полезны!), поэтому компания Microsoft предложила такой вариант WSH. Возможности WSH-скриптов уже гораздо больше, ведь данные скрипты уже создаются на полноценных языках, таких как VBScript и JScript.
Именно о JScript мы сегодня и поговорим.
Но о VBScript мы тоже скажем пару слов.
VBScript – это скриптовой язык программирования, созданный компанией Microsoft для разработки скриптов в операционной системе Windows. Другими словами, это один из языков, которые может интерпретировать Windows Script Host. И из названия ясно, что VBScript основан на языке Visual Basic, поэтому тем, кто знаком с Visual Basic будет просто писать WSH-скрипты на этом языке программирования.
JScript – скриптовой язык программирования, с помощью которого можно создавать (писать) скрипты, которые будут интерпретироваться компонентом Windows Script Host.
С первого взгляда JScript во многом похож на JavaScript (ECMAScript), это и естественно, так как синтаксис, некоторый объекты, методы, свойства аналогичны JavaScript. Но это все же не JavaScript, а именно JScript. JavaScript (ECMAScript) ориентирован на объекты браузера, а JScript уже на компоненты операционной системы Windows. Но как мы сказали, они похожи, поэтому те, кто владеют языком программирования JavaScript с легкостью перейдут на JScript.
Возможности Windows Script Host
А теперь давайте поговорим о том, зачем нам нужно писать эти самые WSH-скрипты, т.е. об их возможностях и преимуществах:
- Возможность взаимодействия с файловой системой (файлы, каталоги), системным реестром, ресурсами локальной сети;
- Взаимодействие с такими продуктами как Microsoft Word, Excel и другими программами. Т.е. например, мы можем создавать excel файлы или конвертировать другие форматы в excel файлы;
- Взаимодействие с ActiveX-технологиями, например: ActiveX Data Object (ADO) — доступ к базам данных разных форматов, Active Directory Service Interface (ADSI) — работа со службами каталогов Active Directory;
- Наличие полноценного языка программирования, с помощью которого можно реализовывать сложные алгоритмы, которые например нельзя реализовать с помощью bat файлов.
Скрипты на JScript имеют расширение .js такое же, как и на JavaScript за исключением того, что эти скрипты обрабатывает не браузер, а Windows Script Host.
На JScript возможно даже реализация графического интерфейса через объект браузера (internet explorer), согласитесь это уже полноценная программа.
Примеры написания WSH скриптов
Перейдем к практике, так как у нас сегодня статья по основам, мы рассмотрим простые примеры написание скриптов на JScript.

Примечание! Для того чтобы попробовать примеры ниже скопируйте код любого примера в текстовый файл и сохраните с расширением .js, например, test.js.
Выводим сообщение на JScript
В WSH имеется специальный объект, на основе которого мы уже можем в дальнейшем создавать другие объекты, настраивать взаимодействие с программами, файлами и другими компонентами операционной системы.
Windows Script Host Error | Cannot Find Script File | How to Fix This | RJ Solution |
Этим объектом является WScript. Пример его использования на Jscript:
var WshShell = WScript.CreateObject("WScript.Shell");
Тем самым мы создали объект, с помощью которого мы можем получить доступ к компонентам Windows.
Например, вывести сообщение:
//Выводим сообщение WshShell.Popup( "Моя первая программа на JScript"); //Завершаем работу с объектом WScript.Quit();
Работа с Excel на JScript
Теперь давайте создадим другой объект, например, Excel файл:
// создаем объект для работы с Excel var Excel = WScript.CreateObject("Excel.Application"); // добавляем книгу в Excel Excel.WorkBooks.Add; //добавляем в первую ячейку нужный текст Excel.Cells(1,1).Value ="Мой текст для вставки в Excel"; // делаем активным наш Excel документ Excel.Visible = true;
Как Вы понимаете, мы имеем доступ ко всем свойствам в Excel, другими словами, мы можем изменить внешний вид, задать формат ячеек и многое другое. Для примера давайте поэкспериментируем с некоторыми свойствами:
//создаем объект для работы с Excel var Excel = WScript.CreateObject("Excel.Application"); //добавляем книгу в Excel Excel.WorkBooks.Add; //выделяем нужный нам диапазон Excel.Range("A1:C1").Select; //объединяем ячейки в нашем диапазоне Excel.Selection.MergeCells = true; //добавляем нужный текст Excel.Selection.Value ="Мой текст для вставки в Excel"; //делаем наш текст жирным Excel.Selection.Font.Bold = true; //изменяем в 4 ячейке формат данных на числовой с двумя знаками после запятой Excel.Cells(1, 4).NumberFormat = "00.00" //вставляем в 4 ячейку нашу цифру Excel.Cells(1, 4).Value = 1234; //выровняем по центру наше значение Excel.Cells(1, 4).HorizontalAlignment = 3; //делаем активным наш Excel документ Excel.Visible = true;
Работа с текстовым файлом и Excel на JScript
Я думаю с Excel все понятно, теперь давайте прочитаем какие-нибудь данные из текстового файла и запишем их в нашу Excel таблицу, для закрепления наших знаний.
Deletando vírus Wscript.exe – (Vbs — Script Host) Windows 7 e 10
Для того чтобы настроить взаимодействие с файловой системой, необходимо создать объект FileSystemObject, который работает с файлами и каталогами. Вот пример небольшого скрипта, который считывает данные из текстового файла построчно и записывает их в Excel документ, причем мы все строки пронумеруем и зададим ширину столба для данных в Excel:
Пример текстового файла:
Первая строка Вторая строка Третья строка
//создаем объект FileSystemObject var FileSysObj = WScript.CreateObject("Scripting.FileSystemObject"); //объявляем нужные нам переменные var nRow = 1, num=1; var txt = ''; //открываем файл my.txt в той же папке, параметр 1 для чтения файла var myText = FileSysObj.OpenTextFile('my.txt', 1 ); //как и раньше создаем объект для работы с Excel var Excel = WScript.CreateObject("Excel.Application"); //добавляем книгу в Excel Excel.WorkBooks.Add; //циклом считываем строки из файла, пока они не закончатся // и записываем их в наш Excel документ while (!myText.AtEndOfStream) < //считываем строку txt = myText.ReadLine(); //нумеруем наши строки в Excel Excel.Cells(nRow, 1).Value = num; //выставляем ширину вторго столбца Excel.Columns(2).ColumnWidth = 15; //записываем данные в ячейку Excel.Cells(nRow, 2).Value = txt; //увеличиваем переменные на 1 nRow++; num++; >//закрываем файл myText.Close(); //делаем активным наш Excel документ Excel.Visible = true; //выходим из скрипта WScript.Quit();
Как всегда весь код я прокомментировал, поэтому неясностей возникнуть не должно.
Я думаю для начала этого вполне достаточно, в дальнейшем мы будем разбирать задачи посложней, ведь при помощи Jscript в WSH можно очень много чего сделать, гораздо больше, чем с помощью простых bat файлов. До встречи!
Windows Script Host (WSH)
В этой статье пойдет разговор о возможностях Windows Script Host в Windows. Естественно, статья не способна заменить всю документацию, но мы попытаемся охватить основные моменты и дать несколько полезных и употребительных примеров.
Что такое Windows Script Host?

Для чего же все-таки нужен WSH? WSH позволяет работать с файловой системой, реестром, сетевыми соединениями (диски, принтеры), окружением и др. С помощью wsh-скриптов можно управлять запуском программ, посылать сигналы другим процессам, удаленно администрировать систему, работать с сетевым принтером, управлять входом в систему (login-скрипты) и многое другое. Скрипты для Windows Script Host могут быть не только отдельными программами, но и встраиваться в HTML-страницы, и использоваться в Active Server Pages (ASP), JScript, VBScript или PerlScript
Где взять Windows Script Host?
Windows Script Host (WSH) встроена в Microsoft Windows 98/Me/2000. Если вы до сих пор пользуетесь Windows 95,то можете загрузить Windows Script Host с сайта Microsoft. Кстати, последняя версия имеет номер 5.6, поэтому пользователи Windows 98/Me/2000 также могут обновить свою версию с 1.0 или 2.0 до текущей, имеющей дополнительные возможности.
Первые шаги по программированию WSH
Скрипт WSH является обычным текстовым файлом с расширениями .js, vbs и подключаются с помощью ActiveXObject в JS- и VBS-скриптах (в т.ч. в HTML). Кроме этого, WSH-скрипты могут содержаться в «своих» файлах — *.wsh и *.wsf (wsh-файлы — это скрипты для старых версий WSH). Эти файлы представляют собой специальные XML-конструкции. В одном файле можно использовать все доступные скриптовые языки.
Создадим первый учебный скрипт в обычном блокноте.
Запустите блокнот. Напечатайте следующий текст:
WScript.Echo("Здравствуй, мир!");
Сохраните файл с расширением .js (вместо .txt). Пусть это будет Hello.js.
Запустите Проводник и щелкните на созданном файле.
WSHost запустит движок JScript и исполнит наш скрипт.
В результате наших действий появится сообщение «Здравствуй, мир!»
Итак, у вас получилось! Но действительные возможности WSH гораздо шире. Вы можете создавать полноценные программы, имеющие очень маленькие размеры файлов. Для примера могу посоветовать скачать две программы (Настроить вид папки 1.0 и Сохранить выделенный текст 1.0) с сайта http://winchanger.narod.ru.
Эти программы полностью написаны на WSH. Обратите внимание, что даже инсталяция этих программ сделана на WSH.
Объектная модель WSH
Для того, чтобы воспользоваться всеми возможностями, которые представляет эта технология, нужно хорошенько разобраться в ее структуре. Windows Script Host состоит из 14 объектов. Самым главным объектом является объект WScript.
- Устанавливает или получает аргументы командной строки.
- Определяет имя скриптового файла.
- Определяет имя хоста для скрипта (wscript.exe или cscript.exe)
- Определяет версию хоста
- Создает, соединяется или отсоединяется от объектов COM
- Программно останавливает выполнение скрипта
- Выводит сообщения
Объект Wscript
Все объекты имеют свои свойства и методы. Не будем утомлять читателя перечислением всех свойств объектов. Приведем только свойства для Wscript
| Свойство | Описание |
|---|---|
| Arguments | Возвращает указатель на список аргументов командной строки |
| FullName | Возвращает имя исполняемого файла хоста и полный путь к нему (например, C:\Windows\wscript.exe) |
| Name | Выводит замечательную надпись Windows Scripting Host |
| Path | Определяет каталог и путь, содержащие wscript.exe или cscript.exe |
| ScriptFullName | Возвращает полный путь и имя исполняемого в данный момент скрипта |
| ScriptName | То же, что и ScriptFullName, но без пути |
| Version | Возвращает версию установленного Windows Scripting Host |
Листинг файла sample.vbs
' Пример работы со свойствами WScript WScript.Echo WScript.FullName WScript.Echo WScript.Name WScript.Echo WScript.Path WScript.Echo WScript.ScriptFullName WScript.Echo WScript.ScriptName WScript.Echo WScript.Version
Возможности WSH
Пора перейти к конкретным примерам, которые могут пробудить ваш интерес к WSH
Drag-and-Drop в WSH
Как уже говорилось выше, WSH имеет богатые возможности для работы с файлами, реестром и так далее. Кроме того, WSH поддерживает Drag’n’Drop. С помощью объекта WScript.Arguments в своем скрипте вы получаете имена файлов, с которыми вам надо работать. Сохраните файл dragndrop.vbs (листинг ниже) на диске, откройте Проводник и теперь просто перетащите любые файлы на ваш скрипт, который покажет их имена (пути к ним).
Листинг файла dragndrop.vbs
' Пример Drag'n'Drop Set objArgs = WScript.Arguments For I = 0 to objArgs.Count - 1 WScript.Echo objArgs(I) Next
Создание ярлыков WSH
Также просто создавать ярлыки. Рассмотрим пример создания ярлыка к калькулятору и поместим его в Автозагрузку.
Листинг файла createshortcut.vbs
' Этот пример показывает, как создавать ярлык к программе ' и копировать его в заданную папку L_Welcome_MsgBox_Message_Text = _ "Этот скрипт создаст ярлык к калькулятору и поместит его в Автозагрузку" L_Welcome_MsgBox_Title_Text = "Для журнала Программист" Call Welcome() ' Создаем ярлык Dim WSHShell Set WSHShell = WScript.CreateObject("WScript.Shell") Dim MyShortcut, MyDesktop, StartupPath ' Узнаем путь к специальной папке Автозагрузка StartupPath = WSHShell.SpecialFolders("Startup") ' Создаем ярлык для Автозагрузки Set MyShortcut = WSHShell.CreateShortcut(StartupPath & _ "\Ярлык к калькулятору.lnk") ' Устанавливаем свойства для ярлыка MyShortcut.TargetPath = WSHShell.ExpandEnvironmentStrings("%windir%\calc.exe") MyShortcut.WorkingDirectory = WSHShell.ExpandEnvironmentStrings("%windir%") MyShortcut.WindowStyle = 4 MyShortcut.IconLocation = _ WSHShell.ExpandEnvironmentStrings("%windir%\calc.exe, 0") MyShortcut.Save WScript.Echo "Ярлык к калькулятору создан и помещен в Автозагрузку" Sub Welcome() Dim intDoIt intDoIt = MsgBox(L_Welcome_MsgBox_Message_Text, _ vbOKCancel + vbInformation, _ L_Welcome_MsgBox_Title_Text ) If intDoIt = vbCancel Then WScript.Quit End If End Sub
Специальные папки
Здесь необходимо сказать несколько слов о специальных папках. В предыдущем примере мы использовали одну такую папку Автозагрузка.
Но дело в том, что в английской версии Windows аналогичная папка носит имя Startup, и если вы укажете точный путь вроде C:\WINDOWS\Главное меню\Программы\Автозагрузка, то это сработает в русской версии Windows и нигде больше. Чтобы избежать этих проблем Microsoft создала список специалных папок.Чтобы получить доступ к какой-либо специальной папке можно воспользоваться свойством SpecialFolders объекта WshShell.
Листинг файла specfol.js
// Десктоп текущего пользователя var WshShell = WScript.CreateObject("WScript.Shell"); strDesktop = WshShell.SpecialFolders("Desktop"); WScript.Echo( strDesktop); // Десктоп общий для всех пользователей strDesktop = WshShell.SpecialFolders("AllUsersDesktop"); WScript.Echo( strDesktop); //Автозагрузка strDesktop = WshShell.SpecialFolders("Startup"); WScript.Echo( strDesktop); //Главное меню strDesktop = WshShell.SpecialFolders("StartMenu"); WScript.Echo( strDesktop);
Работа WSH с реестром
Еще больше возможностей для реализации ваших фантазий предоставляет работа с реестром. Для этого используется объект Wscript.Shell с его методами RegRead, RegWrite, RegDelete.
Приведу пример создания записи в реестре, позволяющий менять заголовок в Internet Explorer
Листинг файла ie_title.vbs
' меняем заголовок у Internet Explorer Dim WshShell, bKey Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.RegWrite "HKCU\Software\Microsoft\Internet Explorer\Main\Window Title", "Я читаю журнал Программист", "REG_SZ" WScript.Echo "Запустите браузер и посмотрите на заголовок!" ' чтобы удалить созданную строку, ' уберите комментарий со следующий строки 'WshShell.RegDelete "HKCU\Software\Microsoft\Internet Explorer\Main\Window Title"
Запуск других приложений
Объект WshShell позволяет запускать другие приложения. В следующем примере мы запускаем две копии Блокнота — новый экземпляр и с содержимым нашего скрипта
Set WshShell = WScript.CreateObject("WScript.Shell") ' Запускаем новый экземпляр Блокнота WshShell.Run "%windir%\notepad" ' Открываем наш скрипт в Блокноте WshShell.Run "%windir%\notepad " & WScript.ScriptFullName
Работа WSH с файлами
Также легко можно копировать, переносить и удалять файлы и папки. Не представляет сложности и работа с просмотром содержимого файла и его редактирования. Освоив данные возможности, вы получаете возможность работать с файлами autoexec.bat и config.sys, проверять значения параметров в win.ini, вести логи работы пользователей
Для этого надо инициализировать объект файловой системы FSO, а затем воспользоваться одним из его методов для открытия файла:
Листинг для файла open.vbs
' Только для примера! Const ForReading = 1, ForWriting = 2, ForAppending = 8 Dim fso, f Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile("c:\autoexec.bat", ForAppending, True) f.Write "Hello world!" f.Close
Итак, OpenTextFile открывает файл, если его нет, то создается новый файл. Из параметров, передаваемых методу, обязательным является только первый — имя файла.
Остальные параметры можно не указывать. Вторым параметром устанавливается режим открытия файла. Возможные значения следующие:
- 1 — файл открывается только для чтения
- 2 — файл открывается для записи. Причем, все содержимое файла, которое было до этого, уничтожится
- 8 — файл открывается для добавления данных. Все, что вы запишите, будет добавлено в конец файла. Довольно удобно для ведения различных логов
Третья переменная может принимать значение true или false. Она показывает, создавать ли новый файл, если его до этого не существовало. Если значение равно true, то новый файл будет создан.
Вот мы с вами и рассмотрели наиболее используемые возможности WSH. Надеюсь, данная технология заинтересовала вас и вы самостоятельно продолжите изучение документации.
Знаете ли Вы, что в 1974 — 1980 годах профессор Стефан Маринов из г. Грац, Австрия, проделал серию экспериментов, в которых показал, что Земля движется по отношению к некоторой космической системе отсчета со скоростью 360±30 км/с, которая явно имеет какой-то абсолютный статус. Естественно, ему не давали нигде выступать и он вынужден был начать выпуск своего научного журнала «Deutsche Physik», где объяснял открытое им явление. Подробнее читайте в FAQ по эфирной физике.
Похожие статьи
-
Windows script host ошибка 80070002
Содержание Windows script host ошибка 80070002, как исправить? Исправляем ошибку 0x80070002 Устраняем неисправность Проверяем центр обновления Вносим…
-
Windows script host код 80070002
Содержание Как устранить ошибку Windows Script Host «Не удается найти указанный файл»? Причины возникновения ошибки Windows Script Host «Не удается найти…
-
Windows based script host как удалить
Содержание Что такое wscript.exe? Это безопасно или вирус? Как удалить или исправить это Это wscript.exe безопасно или это вирус или вредоносная…