- Основы языка JScript — написание WSH скриптов
- Что такое Windows Script Host?
- Возможности Windows Script Host
- Примеры написания WSH скриптов
- Выводим сообщение на JScript
- Работа с Excel на JScript
- Работа с текстовым файлом и Excel на JScript
- Windows Script Host (WSH)
- Знакомство с WSH
- Что такое Windows Script Host?
- Где взять Windows Script Host?
- Первые шаги по программированию WSH
- Объектная модель WSH
- Объект Wscript
- Возможности WSH
- Drag-and-Drop в WSH
- Создание ярлыков WSH
- Специальные папки
- Работа WSH с реестром
- Запуск других приложений
- Работа WSH с файлами
- Скрипты windows scripting host
- Свойство SpecialFolders.
Основы языка 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 имеется специальный объект, на основе которого мы уже можем в дальнейшем создавать другие объекты, настраивать взаимодействие с программами, файлами и другими компонентами операционной системы.
Этим объектом является WScript. Пример его использования на Jscript:
Тем самым мы создали объект, с помощью которого мы можем получить доступ к компонентам Windows.
Например, вывести сообщение:
Работа с Excel на JScript
Теперь давайте создадим другой объект, например, Excel файл:
Как Вы понимаете, мы имеем доступ ко всем свойствам в Excel, другими словами, мы можем изменить внешний вид, задать формат ячеек и многое другое. Для примера давайте поэкспериментируем с некоторыми свойствами:
Работа с текстовым файлом и Excel на JScript
Я думаю с Excel все понятно, теперь давайте прочитаем какие-нибудь данные из текстового файла и запишем их в нашу Excel таблицу, для закрепления наших знаний.
Для того чтобы настроить взаимодействие с файловой системой, необходимо создать объект FileSystemObject, который работает с файлами и каталогами. Вот пример небольшого скрипта, который считывает данные из текстового файла построчно и записывает их в Excel документ, причем мы все строки пронумеруем и зададим ширину столба для данных в Excel:
Пример текстового файла:
Как всегда весь код я прокомментировал, поэтому неясностей возникнуть не должно.
Я думаю для начала этого вполне достаточно, в дальнейшем мы будем разбирать задачи посложней, ведь при помощи Jscript в WSH можно очень много чего сделать, гораздо больше, чем с помощью простых bat файлов. До встречи!
Windows Script Host (WSH)
Знакомство с 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-конструкции. В одном файле можно использовать все доступные скриптовые языки.
Создадим первый учебный скрипт в обычном блокноте.
Запустите блокнот. Напечатайте следующий текст:
Сохраните файл с расширением .js (вместо .txt). Пусть это будет Hello.js.
Запустите Проводник и щелкните на созданном файле.
WSHost запустит движок JScript и исполнит наш скрипт.
В результате наших действий появится сообщение «Здравствуй, мир!»
Итак, у вас получилось! Но действительные возможности WSH гораздо шире. Вы можете создавать полноценные программы, имеющие очень маленькие размеры файлов. Для примера могу посоветовать скачать две программы (Настроить вид папки 1.0 и Сохранить выделенный текст 1.0) с сайта http://winchanger.narod.ru. Эти программы полностью написаны на WSH. Обратите внимание, что даже инсталяция этих программ сделана на WSH.
Объектная модель WSH
Для того, чтобы воспользоваться всеми возможностями, которые представляет эта технология, нужно хорошенько разобраться в ее структуре. Windows Script Host состоит из 14 объектов. Самым главным объектом является объект WScript.
Рассмотрим основные объекты и их возможности WScript
- Устанавливает или получает аргументы командной строки.
- Определяет имя скриптового файла.
- Определяет имя хоста для скрипта (wscript.exe или cscript.exe)
- Определяет версию хоста
- Создает, соединяется или отсоединяется от объектов COM
- Программно останавливает выполнение скрипта
- Выводит сообщения
WshArguments Получает доступ к аргументам командной строки WshNamed Получает доступ к именованным аргументам командной строки WshUnnamed Получает доступ к безымянным аргументам командной строки WshNetwork Работа с сетью WshController Для работы со скриптами удаленного управления WshRemote Удаленные скрипты WshRemote Error Информация об ошибках (для WshRemote) WshShell Работа с оболочкой Windows WshShortcut Создание ярлыков WshSpecialfolders Пути к специальным папкам Windows WshURLShortcut Создание интернет-ссылок WshEnvironment Доступ к коллекции переменных окружения WshScriptExec Работа со скриптами
Объект 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
Возможности WSH
Пора перейти к конкретным примерам, которые могут пробудить ваш интерес к WSH
Drag-and-Drop в WSH
Как уже говорилось выше, WSH имеет богатые возможности для работы с файлами, реестром и так далее. Кроме того, WSH поддерживает Drag’n’Drop. С помощью объекта WScript.Arguments в своем скрипте вы получаете имена файлов, с которыми вам надо работать. Сохраните файл dragndrop.vbs (листинг ниже) на диске, откройте Проводник и теперь просто перетащите любые файлы на ваш скрипт, который покажет их имена (пути к ним).
Листинг файла dragndrop.vbs
Создание ярлыков WSH
Также просто создавать ярлыки. Рассмотрим пример создания ярлыка к калькулятору и поместим его в Автозагрузку.
Листинг файла createshortcut.vbs
Специальные папки
Здесь необходимо сказать несколько слов о специальных папках. В предыдущем примере мы использовали одну такую папку Автозагрузка. Но дело в том, что в английской версии Windows аналогичная папка носит имя Startup, и если вы укажете точный путь вроде C:\WINDOWS\Главное меню\Программы\Автозагрузка, то это сработает в русской версии Windows и нигде больше. Чтобы избежать этих проблем Microsoft создала список специалных папок.Чтобы получить доступ к какой-либо специальной папке можно воспользоваться свойством SpecialFolders объекта WshShell.
Листинг файла specfol.js
Работа WSH с реестром
Еще больше возможностей для реализации ваших фантазий предоставляет работа с реестром. Для этого используется объект Wscript.Shell с его методами RegRead, RegWrite, RegDelete.
Приведу пример создания записи в реестре, позволяющий менять заголовок в Internet Explorer
Листинг файла ie_title.vbs
Запуск других приложений
Объект WshShell позволяет запускать другие приложения. В следующем примере мы запускаем две копии Блокнота — новый экземпляр и с содержимым нашего скрипта
Работа WSH с файлами
Также легко можно копировать, переносить и удалять файлы и папки. Не представляет сложности и работа с просмотром содержимого файла и его редактирования. Освоив данные возможности, вы получаете возможность работать с файлами autoexec.bat и config.sys, проверять значения параметров в win.ini, вести логи работы пользователей
Для этого надо инициализировать объект файловой системы FSO, а затем воспользоваться одним из его методов для открытия файла:
Листинг для файла open.vbs
Итак, OpenTextFile открывает файл, если его нет, то создается новый файл. Из параметров, передаваемых методу, обязательным является только первый — имя файла. Остальные параметры можно не указывать. Вторым параметром устанавливается режим открытия файла. Возможные значения следующие:
- 1 — файл открывается только для чтения
- 2 — файл открывается для записи. Причем, все содержимое файла, которое было до этого, уничтожится
- 8 — файл открывается для добавления данных. Все, что вы запишите, будет добавлено в конец файла. Довольно удобно для ведения различных логов
Третья переменная может принимать значение true или false. Она показывает, создавать ли новый файл, если его до этого не существовало. Если значение равно true, то новый файл будет создан.
Вот мы с вами и рассмотрели наиболее используемые возможности WSH. Надеюсь, данная технология заинтересовала вас и вы самостоятельно продолжите изучение документации.
Скрипты windows scripting host
Возвращает объект, который позволяет получить значения переменных среды
Свойство SpecialFolders.
Пример WSH скрипта копирования файла.
Следующий пример создает ярлык URL на рабочем столе
WSH скрипт может установить новый принтер в Windows, инициировать установку драйверов.
В этом примере WSH скрипт присваивает назначенную пользователем букву сетевому диску
В следующем примере мы рассмотрим важную практическую задачу: выбрать средствами windows папку и передать в bat / cmd файл имя папки и путь к ней.
Этот же пример можно записать и так
Свернуть все окна рабочего стола Windows
Развернуть все окна рабочего стола Windows
Запуск проводника Windows с определённой открытой папкой.
Определить объем оперативной памяти
Вызов окна «Запуск программы»
Вызов окна выключения и перезагрузки компьютера
Вызов окна Сетевые подключения Панели управления
Вызов окна Internet properties
Вызов окна Regional Settings properties
Вызов окна Network properties
Вызов окна Password properties
Вызов окна System properties and Add New Hardware wizard
Вызов окна Desktop Themes
Вызов окна Date/Time properties
Вызов апплета можно производит непосредственно используя Rundll32.exe. Тогда, например, вызов окна установки даты и времени может выглядеть так:
На странице с описанием команды Rundll32 можно найти большое количество примеров ее использования. Следовательно, поменяв в примере, приведенном выше, последнюю строку можно получить все эти возможности из WSH.
В следующем примере открывается окно браузера с требуемой страницей.
Пример WSH скрипта вызова окна проводника Windows «поиск компьютера»
Вывод модального окна с заголовком окна, текстом вопроса и кнопками ДА и НЕТ. Так же определен срок, по истечении которого окно будет принудительно закрыто (код возврата -1).
Выбор файла через проводник
Определить дату установки Windows
Издать звук (гудок) динамиком.
или то же самое на VBS
В следующем примере WSH скрипт через командный процессор (cmd) вызывает команду dir и далее обрабатывает результаты ее работы. Сам пример возможно и не так так уж интересен (хотя такая задача, как выбор файлов из папки по маске отсортированных по дате не столь уж и тривиальная для скрипта), а вот возможность обработки StdIn, StdOut и StdErr открывает дополнительные перспективы.
Еще один пример WSH скрипта для работы с StdIn и StdOut. На сей раз на VBS.
Еще один пример WSH скрипта, который запускает внешнюю программу с параметром и обрабатывает вывод этой программы:
Если в предыдущем примере использовать другую команду, то при русской локализации могут возникнуть сложности из-за того, что вывод команды осуществляется в DOS кодировке. В таком случае при необходимости вывода строку следует перекодировать в WIN(1251) кодировку. Используем для этого функцию, написанную на VBS.
Несколько примеров как из Windows Script Host (WSH) создавать ярлыки.
Как следует из комментариев, скрипт создает на рабочем столе ярлык для запуска программы notepad.
В приведенном примере умышленно присутствует некоторая избыточность. Обычно нет необходимости определять рабочий каталог, аргументы командной строки, иконку. В этом случае ваш код будет просто короче.
Следующий пример демонстрирует как Windows Script Host (WSH) может создавать ярлыки для сетевых ресурсов.
Несколько примеров как из Windows Script Host (WSH) выполнять запросы Windows Management Instrumentation (WMI) и обрабатывать результаты.
В следующем примере — вывод всех локальных аккаунтов на компьютере:
Немного изменим запрос) — и получаем список процессов на компьютере
В следующем примере WSH используя запрос к WMI получает список логических дисков. Да, в WSH есть собственные методы для этого, и, как мне кажется, они более уместны для такого случая. Здесь просто рассмотрена еще одна возможность.
Пример получения сведений об операционной системе. WSH + WMI.
WSH + WMI. Класс Win32_ComputerSystem
Следующий пример использования WMI в WSH — определить установленные кодеки.
Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).
Новый раздел о средствах командной строки в рамках этого же проекта расположен здесь