Wscript shell что это за программа

Windows — автоматизация задач с помощью скриптов. Интересные возможности 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:

VBScript — WshShell (7a — 9)

В Windows по умолчанию расширение файла .js ассоциировано с JScript-скриптами, .vbs — с VBScript. При установке PerlScript появляется ассоциация .pls — с PerlScript-скриптами. Скрипты js и vbs можно закодировать с помощью утилиты от Microsoft screnc.exe, получив на выходе файл с расширением .jse или .vbe, соответственно. К сожалению, такое кодирование защитит лишь от неопытных пользователей — множество раскодировщиков можно найти в Google. Кроме того, при закодировании бывают проблемы с русским текстом.

Function WSHInputBox ( Message , Title , Value )
WSHInputBox = InputBox ( Message , Title , Value )
End Function
//Ваш код на JS
var name = WSHInputBox ( «Введите ваше имя:» , «Запрос» , «Вася Пупкин» ) ;
WScript . Echo ( «Имя: » + name ) ;

Таким же образом можно скомбинировать, например, JScript и PerlScript, если PerlScript у вас установлен:

use strict ;
our $ WScript ;
use LWP: : UserAgent ;
sub do_request
my $ lwp = new LWP: : UserAgent ;
my $ response = $ lwp -> get ( $ _ [ 0 ] ) ;
if ( $ response -> is_success )
return $ response -> headers -> as_string ;
return $ response -> error_as_HTML ;
WScript . Echo ( do_request ( «http://ya.ru» ) ) ;

Небольшое отступление — расскажу о запуске скриптов для WSH. По двойному клику мышкой они по умолчанию запускаются с помощью программы wscript.exe. В этом случае все вызовы WScript.Echo транслируются в обычные messagebox’ы. Если вы используете скрипт для автоматизации какого-либо процесса, например, сборки какого-либо проекта, и желаете выводить множество сообщений, то следует скрипт запускать с помощью программы cscript.exe, которая обращения к WScript.Echo транслирует в выводы в консоль. Запустить скрипт в консольном варианте можно, создав bat-файл с примерно таким содержимым:

Обучение VBS (8 урок) от ___toha___ (Библиотека WScript.Shell часть 1)

cscript my_script . wsf [ параметры ]

Можно также кликнуть на файле скрипта и вызвать меню «Open with command prompt».

Возможно, я кого-то удивлю, если скажу, что из скриптов для WSH можно с легкостью использовать классы .NET! Приведу пример на JScript (js-файл):

function vote_form ( )
//Создаем объект формы и всякие контролы
this . form = WScript . CreateObject ( «System.Windows.Forms.Form» ) ;
this . radioButton1 = WScript . CreateObject ( «System.Windows.Forms.RadioButton» ) ;
this . radioButton2 = WScript . CreateObject ( «System.Windows.Forms.RadioButton» ) ;
this . radioButton3 = WScript . CreateObject ( «System.Windows.Forms.RadioButton» ) ;
this . radioButton4 = WScript . CreateObject ( «System.Windows.Forms.RadioButton» ) ;
this . button1 = WScript . CreateObject ( «System.Windows.Forms.Button» ) ;
this . button2 = WScript . CreateObject ( «System.Windows.Forms.Button» ) ;
this . linkLabel1 = WScript . CreateObject ( «System.Windows.Forms.LinkLabel» ) ;
//Настраиваем контролы
with ( this . radioButton1 )
Parent = this . form ;
Checked = true ;
Width = 110 ;
Height = 17 ;
TabStop = true ;
Text = «VBScript» ;
with ( this . radioButton2 )
Parent = this . form ;
Width = 110 ;
Height = 17 ;
TabStop = true ;
Text = «JScript» ;
with ( this . radioButton3 )
Parent = this . form ;
Width = 110 ;
Height = 17 ;
TabStop = true ;
Text = «PerlScript» ;
with ( this . radioButton4 )
Parent = this . form ;
Width = 110 ;
Height = 17 ;
TabStop = true ;
Text = «Единая Россия» ;
with ( this . button1 )
Parent = this . form ;
Height = 23 ;
DialogResult = 1 ;
with ( this . button2 )
Parent = this . form ;
Height = 23 ;
Text = «Идите вы!» ;
DialogResult = 0 ;
with ( this . linkLabel1 )
Parent = this . form ;
Height = 15 ;
Text = «kaimi.io» ;
//настраиваем форму
with ( this . form )
Width = 222 ;
Height = 125 ;
Text = «Какой язык вам больше по душе?» ;
AutoSize = true ;
FormBorderStyle = 5 ; //FixedToolWindow
CancelButton = this . button1 ;
CancelButton = this . button2 ;
//Отобразить форму и вернуть true, если пользователь нажал на первую кнопку
this . show = function ( )
this . form . ShowDialog ( ) ;
return this . form . DialogResult == 1 ;
//Получить выбранный результат (см. выше, на форме 4 radio button’а)
this . result = function ( )
if ( this . radioButton1 . Checked )
return this . radioButton1 . Text ;
else if ( this . radioButton2 . Checked )
return this . radioButton2 . Text ;
else if ( this . radioButton3 . Checked )
return this . radioButton3 . Text ;
else if ( this . radioButton4 . Checked )
return this . radioButton4 . Text ;
//Создаем форму
var my_form = new vote_form ;
//Предлагаем пользователю сделать выбор
while ( true )
if ( my_form . show ( ) )
WScript . Echo ( «Вы выбрали: » + my_form . result ( ) ) ;
WScript . Echo ( «Ну как же так, надо же выбрать!» ) ;

Выполнив этот скрипт, увидим такую форму:

И все это создано с помощью .NET-классов! Есть, правда, в этом некоторые сложности. Во-первых, я не нашел путей для взаимодействия с делегатами, которые используются при обработке событий в .NET. Во-вторых, не существует способа вызвать через CreateObject конструктор COM-объекта, принимающий параметры (это относится не только к .NET, кстати). В-третьих, по умолчанию в скриптах доступны лишь некоторые .NET-сборки и классы:

System.Collections.Queue
System.Collections.Stack
System.Collections.ArrayList
System.Collections.SortedList
System.Collections.Hashtable
System.IO.StringWriter
System.IO.MemoryStream
System.Text.StringBuilder
System.Random

С другой стороны, опубликовать .NET-сборку, чтобы она стала доступной через COM-интерфейсы (которые и используются в WSH), совсем несложно. Если вышеприведенный скрипт с Windows Forms у вас не заработал (что, скорее всего, так и есть), наберите в консоли команду:

% WINDIR % Microsoft . NET Framework v2 . 0.50727 RegAsm . exe System . Windows . Forms . dll / codebase

либо, если вы пользуетесь 64-битной операционной системой, то

% WINDIR % Microsoft . NET Framework64 v2 . 0.50727 RegAsm . exe System . Windows . Forms . dll / codebase

Эта команда опубликует сборку System.Windows.Forms и она станет доступной через COM-интерфейсы, после чего вы сможете использовать классы из нее в скриптах. К сожалению, не все сборки можно зарегистрировать, а только те, которые имеют аттрибут ComVisible=true (если такой аттрибут у сборки есть, об этом говорится на соответствующих страницах с описанием сборки в MSDN).

Для отмены регистрации сборки выполните приведенную выше команду с ключом /unregister.

Что еще следует знать при использовании .NET-сборок? Часто классы в .NET имеют перегруженные функции с одинаковыми именами и разными типами и количеством параметров. Как вызывать их? Ведь переменные в скриптах практически не типизируются! Все очень просто. Например, возьмем класс System.Random. Он уже зарегистрирован по умолчанию и доступен из WSH. Но он имеет три метода с именем Next.

Как вызвать нужный? .NET маппит имена одинаковых методов следующим образом: первый с конца в таблице методов имеет имя Next (в данном случае), следующий — Next_2, далее — Next_3. Где увидеть эту таблицу с правильным порядком функций? Например, в ildasm’е:

Здесь я открыл сборку mscorlib.dll из %WINDIR%Microsoft.NETFramework64v2.0.50727, после чего зашел в неймспейс System и нашел класс Random в нем. Теперь ясно — если мы хотим воспользоваться методом Next, предоставляющим возможность указать минимальное и максимальное значение при генерации рандома, то следует вызвать Next_2 (так как этот метод второй с конца в списке методов Next, смотрите скриншот выше):

var random = WScript . CreateObject ( «System.Random» ) ;
WScript . Echo ( random . Next_2 ( 10 , 20 ) ) ; //выводим рандомное число в диапазоне от 10 до 20

Еще одной из интересных возможностей скриптов для WSH является поддержка drag-drop’а. На файлы .js, .vbs, .jse, .vbe, .wsf можно перетаскивать другие файлы, и их имена будут доступны через WScript.Arguments.

Итак, подведем итоги. Чем же примечательно написание скриптов на JScript, VBscript или PerlScript? Почему это лучше и проще bat-файлов или PowerShell’а?

[+] Вы сами выбираете знакомый любимый синтаксис. Предпочитаете JavaScript — пишите на нем, обожаете Visual Basic — тогда VBScript для вас!
[+] Вы можете комбинировать эти языки в одном скрипте, тем самым дополняя возможности одного языка фичами другого.
[+] Вам доступны все стандартные особенности выбранного языка. Поддержка выполнения внешних программ, работа с текстовыми и двоичными файлами, регулярные выражения и многое другое прилагается. Поддержка работы с файлами по маске, с сетевыми путями (samba, например) — тоже.
[+] Вы можете использовать множество зарегистрированных COM-классов.
[+] Вы можете использовать многие COM-Visible .NET-сборки.
[+] Вы можете работать с WMI, так как он доступен через COM.
[+] Имеется полная поддержка Unicode, достаточно сохранить файл как Unicode Little Endian.

Масса очевиднейших плюсов. На WSH можно писать мощнейшие приложения и скрипты, которые облегчат вам жизнь и сделают какие-то полезные задачи автоматически.

Сейчас мне остается лишь привести несколько полезных сниппетов, которые пригодятся вам, если вы решите использовать WSH для написания скриптов, производящих автоматическую сборку проектов/парсинг/работу с файлами и т.д. Для примера я буду использовать свой любимый JScript, потому что он имеет наиболее привычный синтаксис и будет понятен большинству из вас. Кроме того, в JScript удобно перехватывать исключения, которые могут быть выброшены функциями COM-классов и объекта WScript, с помощью try-catch. Можно и самим бросать исключения (это штатная возможность языка JavaScript, и, разумеется, она есть в JScript).

Читайте также:
Лдсп что это за программа

1. Работаем с файловой системой.

Источник: kaimi.io

Основы языка 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.

Курс по SQL для начинающих

Примечание! Для того чтобы попробовать примеры ниже скопируйте код любого примера в текстовый файл и сохраните с расширением .js, например, test.js.

Выводим сообщение на JScript

В WSH имеется специальный объект, на основе которого мы уже можем в дальнейшем создавать другие объекты, настраивать взаимодействие с программами, файлами и другими компонентами операционной системы.

Этим объектом является 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 таблицу, для закрепления наших знаний.

Для того чтобы настроить взаимодействие с файловой системой, необходимо создать объект 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 файлов. До встречи!

Источник: info-comp.ru

Объект WScript.Shell метод Run — запуск внешних программ

Объект WScript.Shell метод Run — запуск внешних программ

Объектная модель Windows Script Host

Автор Coding На чтение 7 мин Просмотров 486 Опубликовано 18.12.2014

Доброго времени суток всем читателям блога scriptcoding.ru. В этой статье мы подробно рассмотрим метод Run Wscript.Shell объекта. Данный метод служит для запуска внешних приложений из тела сценариев Windows Script Host.

Для начала мы рассмотрим теоретическую часть, а потом приступим к программированию.

Run (strCommand, [intWindowStyle], [bWaitOnReturn]) – данный метод служит для запуска другого приложения как в консольном режиме (командная строка), так и в оконном. При открытии исполняемого файла создается новый процесс. Ему передаются следующие параметры:

strCommand – данный параметр является обязательным, поскольку задает путь для файла или команды. Стоит учитывать, что если путь содержит пробелы, то его обязательно стоит заключать в двойные кавычки, иначе, возникнет ошибка « The system cannot find the file specified » – система не может найти указанный файл. Также полезно, использовать переменные окружения в пути к приложению, это экономит время.

intWindowStyle – является необязательным, и задает стиль окна. Параметр может принимать целые значения от 0 до 10. Согласно документации, в языке vbscript можно использовать именованные константы, но, они не всегда дают ожидаемый результат, и так как эти значения между собой повторяются, я упомянул лишь три:

  • 0 – скрывает окно, будет виден только процесс в диспетчере задач.
  • 1 – нормальный режим
  • 2 – свернутый вид
  • 3 – развернутый вид

bWaitOnReturn – может принимать true – сценарий будет ожидать завершения работы запущенного приложения, и только потом перейдет к выполнению следующей строчки кода, false – будет продолжатся выполнение сценария независимо от того, завершилась работа запущенного приложения или нет. Также следует учесть, что если установлено true, то метод вернет код выхода вызванного приложения, если установлено false – всегда будет возвращаться ноль.

Хорошо, теперь настало время заняться программирование. Для начала напишем программный код на языке VBScript:

‘*******************************************************’ метод wscript shell run’ Запуск бл0кн0та и калькулятора’ wshshell_run.vbs’*******************************************************OptionExplicit dim path, WshShell ‘ задаем путь к системной папкеpath = «%WINDIR%System32» ‘ Создаем ссылку на объект WscriptShellset WshShell = WScript.CreateObject(«Wscript.Shell») ‘ Открываем notepad (Wshshell Run)WshShell.Run path notepad.exe», ,trueMsgBox «Текстовый редактор завершил работу. » «Запускаем калькулятор» ‘ Открываем calcWshShell.Run path calc.exe»,2,falseMsgBox «Этот текст выводится сразу»

‘*******************************************************’ метод wscript shell run’ Запуск бл0кн0та и калькулятора’ wshshell_run.vbs’*******************************************************Option Explicitdim path, WshShell’ задаем путь к системной папкеpath = «%WINDIR%System32″‘ Создаем ссылку на объект WscriptShellset WshShell = WScript.CreateObject(«Wscript.Shell»)’ Открываем notepad (Wshshell Run)WshShell.Run path notepad.exe», ,trueMsgBox «Текстовый редактор завершил работу. » «Запускаем калькулятор»‘ Открываем calcWshShell.Run path calc.exe»,2,falseMsgBox «Этот текст выводится сразу»

Читайте также:
Serial io driver что это за программа

Давайте проанализируем логику работы данного сценария. Переменная path хранит путь к папке System32, так как в ней у нас лежат исполняемые файлы notepad и calc. Переменная окружения « %WINDIR% » позволяет сократить строки кода и не писать « C:Windows «. WshShell содержит ссылку на экземпляр объекта Wscript.Shell, видим, чтобы создать саму ссылку, мы перед переменной прописали ключевое слово set, после чего идет вызов метода CreateObject класса WScript, подробней о работе с объектами читайте «Урок 8 по VBScript: Объекты и классы» и «Урок 4 по JScript: Создание собственных объектов«. Далее мы запускаем блокнот с помощью метода Run Wscript Shell класса, через переменную WshShell. Для программы notepad мы третий параметр команды Run поставили в true, поэтому, исполняемый файл calc запустится только после закрытия приложения блокнот, плюс, перед этим появится информационное сообщение.

wshshell run

Хорошо, теперь давайте посмотрим на аналогичный пример, но написанный уже на языке jscript.

//*******************************************************// метод wscript shell run// Запуск бл0кн0та и калькулятора// wshshell_run.js//******************************************************* var path, WshShell; // задаем путь к системной папкеpath =»%WINDIR%System32″; // Создаем ссылку на WscriptShellWshShell = WScript.CreateObject(«Wscript.Shell»); // Запускаем notepad (Wshshell Run)WshShell.

Run(path +»notepad.exe»,1,true);WScript.Echo(«Текстовый редактор завершил работу. «+»n»+»Запускаем калькулятор»); // Запускаем calcWshShell.Run(path +»calc.exe»,2,false);WScript.Echo(«Этот текст выводится сразу»);

//*******************************************************// метод wscript shell run// Запуск бл0кн0та и калькулятора// wshshell_run.js//*******************************************************var path, WshShell;// задаем путь к системной папкеpath = «%WINDIR%System32»;// Создаем ссылку на WscriptShellWshShell = WScript.CreateObject(«Wscript.Shell»);// Запускаем notepad (Wshshell Run)WshShell.Run (path + «notepad.exe»,1,true);WScript.Echo («Текстовый редактор завершил работу. » + «n» + «Запускаем калькулятор»);// Запускаем calcWshShell.Run (path + «calc.exe»,2,false);WScript.Echo («Этот текст выводится сразу»);

В данном примере, мы видим, что для команды Run мы прописали второй параметр (1 – нормальный режим), если этого не сделать, то произойдет ошибка, язык jscript не дает нам возможности пропустить параметр. Также видим, что тут не нужно использовать дополнительное ключевое слово типа set.

WScript Shell Run

Хорошо, теперь давайте посмотрим на еще один пример на языке vbscript.

‘*******************************************************’ метод wscript run’ Запуск бл0кн0та и передача ему текста’ wscript_run.vbs’*******************************************************OptionExplicit dim WshShell ‘ Создаем ссылку на WscriptShellset WshShell = WScript.CreateObject(«Wscript.Shell») ‘ Открываем текстовый редактор и вставляем в него содержимое сценарияWshShell.Run «notepad.exe » Мы открывали текстовый редактор»

‘*******************************************************’ метод wscript run’ Запуск бл0кн0та и передача ему текста’ wscript_run.vbs’*******************************************************Option Explicitdim WshShell’ Создаем ссылку на WscriptShellset WshShell = WScript.CreateObject(«Wscript.Shell»)’ Открываем текстовый редактор и вставляем в него содержимое сценарияWshShell.Run «notepad.exe » Мы открывали текстовый редактор»

В этом примере мы также запустили приложение notepad, но, не прописывали путь к нему. Дело в том, что команда Run объекта Wscript.Shell работает как команда « Windows Пуск/Выполнить «, и при запуске приложения, сперва идет его поиск в переменных средах Windows, в которые, и входит папка System32 . Также видим, что мы передали программе содержимое нашего сценария (строка WScript.ScriptFullName), фактически, скопировали в него весть текст скрипта.

shell wscript run

Ну и напоследок, аналогичный пример, но уже на языке jscript:

//*******************************************************// метод wscript run// Запуск бл0кн0та ему текста// wscript_run.js//******************************************************* var WshShell; // Создаем ссылку на WscriptShellWshShell = WScript.CreateObject(«Wscript.Shell»); // Открываем текстовый редактор и вставляем в него содержимое сценарияWshShell.Run(«notepad.exe «+ WScript.ScriptFullName,1,true);WScript.Echo(«Это был запуск текстового редактора»);

//*******************************************************// метод wscript run// Запуск бл0кн0та ему текста// wscript_run.js//*******************************************************var WshShell;// Создаем ссылку на WscriptShellWshShell = WScript.CreateObject(«Wscript.Shell»);// Открываем текстовый редактор и вставляем в него содержимое сценарияWshShell.Run («notepad.exe » + WScript.ScriptFullName,1,true);WScript.Echo («Это был запуск текстового редактора»);

И так, давайте все подытожим… В этой статье мы разобрали метод Run класса Wscript Shell, который позволяет запускать заданное приложение, и передавать ему нужные параметры, так, мы можем открыть текстовый редактор и вставить в него нужный текст. Аналогично, можно использовать и метод Exec, который тоже позволяет запускать исполняемый файл, но в отличии от метода Run, он позволяет контролировать работу исполняемого файла.

Источник: scriptcoding.ru

WScript – сервер сценариев Windows с графическим интерфейсом.

Сервер сценариев wscript.exe , начиная с Windows 98, является стандартным компонентом Windows Script Host (WSH), и предназначен для выполнения сценариев (скриптов), написанных на языках VBScript и Jscript. Возможности сценариев WSH значительно выше возможностей командных файлов Windows, что позволяет решать многие задачи управления и контроля системы стандартными средствами без использования дополнительного программного обеспечения.

Сценарии WSH могут исполняться в среде сервера сценариев Windows с помощью одной из двух программ — wscript.exe (с графическим интерфейсом) или cscript.exe (с консольным интерфейсом). Функционально, обе программы близки, но графический интерфейс более удобен для выполнения интерактивных сценариев, а консольный – для сценариев администрирования, не требующих диалога с пользователем. Диалоговый режим при выполнении сценариев как с использованием wscript.exe , та и с использованием cscript.exe может быть отключен специальным параметром командной строки. Большинство сценариев администрирования Windows (в том числе многие сценарии, предлагаемые Microsoft) требуют использовать CScript в качестве сервера сценариев. Также следует отметить, что некоторые из свойств объекта WScript (не путать с сервером сценариев WScript!) существуют только тогда, когда активным сервером сценариев является CScript . По умолчанию, в среде WSH используется сервер сценариев wscript.exe

При запуске wscript.exe без параметров, отображается окно Параметры сервера сценариев Windows :

Как видим, имеется всего лишь возможность ограничить время выполнения сценариев и изменить режим отображения сведений о программе в консольном режиме.

Для получения справки по работе с программой, можно воспользоваться командой:

Справка отображается в стандартном окне сообщений Windows:

Формат командной строки wscript.exe :

wccript имя_сценария.расширение [параметры. ] [аргументы. ]

Параметры командной строки:

//B — Пакетный режим: подавляются отображение ошибок и запросов сценария

//D — Включение режима Active Debugging

//E:ядро — Использование указанного ядра для выполнения сценария

//H:CScript — Стандартный сервер сценариев заменяется на CScript.exe

//H:WScript — Стандартный сервер сценариев заменяется на WScript.exe (по умолчанию)

//I — Диалоговый режим (по умолчанию, в противоположность //B)

//Job:xxxx — Выполнение указанного задания WSF

//Logo — Отображать сведения о программе (по умолчанию)

//Nologo — Не отображать сведения о программе во время выполнения

//S — Присвоить установкам сервера сценариев Windows значения по умолчанию.

//T:nn — Интервал ожидания (в секундах): максимальное время выполнения сценария

//X — Выполнение сценария в отладчике

Отличительная особенность параметров командной строки для сервера сценариев – это использование двойной косой черты (двойной прямой слэш – forward slash). Для получения подсказки по использованию, допускаются команды wscript /? и wscript -?

Примеры использования сервера сценариев CSCript

wscript //B hello1.vbs — выполнить сценарий hello1.vbs в графическом режиме.

wscript //D //X hello1.vbs — выполнить сценарий hello1.vbs в среде отладчика c использованием средств активной отладки. Порядок работы и возможности определяются отладчиком, установленным в системе по умолчанию.

wscript.exe /E:VBScript.Encode hello1.js — выполнить сценарий hello1.js но использовать исполняющее ядро VBScript.Encode . Надо отметить, что программный модуль wscript.exe , как и cscript.exe , будучи сервером сценариев, не является интерпретатором языка, на котором написан сценарий, и всего лишь выполняет вызов интерпретатора в соответствии с расширением файла или в соответствии со значением параметра //E: . В качестве интерпретаторов используются динамические библиотеки:

jscript.dll — для языка Jscript

vbscript.dll — для языка VBScript

wscript.exe /H:CScript — установить в качестве сервера сценариев, используемого по умолчанию cscript.exe . После выполнения команды, отображается стандартное окно сообщения Windows:

Используемый по умолчанию сервер сценариев: «cscript.exe».

Стандартно, сервером сценариев по умолчанию, является wscript.exe .

wscript //I hello1.vbs — выполнить сценарий hello1.vbs в интерактивном режиме. Сценарий будет выполнен с отображением сообщений и запросов пользователю ( противоположность параметру //B ).

wscript //Job:main job1.wsf — выполнить задачу с идентификатором main , параметры которой описываются содержимым файла job1.wsf . Файл с параметрами задачи представляет собой XML-файл, обрабатываемый сервером сценариев в соответствии с указанными XML — элементами. Обычно, файлы .wsf используются в тех случаях, когда необходимо в рамках одного сценария выполнить фрагменты исходного кода, написанные на разных языках программирования. Например:

В частности, использование задач .wsf продиктовано необходимостью реализации пользовательского ввода для сценариев на языке JScript. В реализации языка такой ввод отсутствует, но в VBScript есть функция InputBox которая как раз и позволяет это сделать. Обычно, в разделе на языке VBScript описывается пользовательская функция (например, InputString ) для ввода значения посредством функции InputBox . А из раздела на языке JScript выполняется обращение к функции InputString так, как будто она была написана на этом же самом языке.

Пример сценария, в котором выполняется запрос пользователю на ввод данных в графическом окне, выводимом фрагментом исходного кода на языке VBScript, и вывод введенных данных в окне, отображаемом фрагментом исходного кода на языке JScript:

Function InputString(StrWords) ‘ Описываем функцию на языке VBScript
InputString = InputBox(StrWords, «Вводимая строка данных»)
End Function

var OutString;
var queryString=’Сообщение пользователю. Введите строку:’;
OutString = InputString(queryString); //Вызываем функцию InputString
//Выводим значение переменной OutString на экран
WScript.Echo(”Введенная строка”+» — «+ OutString +»!»);

Для запуска задачи используется команда:

wscript //Job:Str1 hello1.wsf — выполнить задачу с идентификатором Str1 из файла hello1.wsf

wscript //S — Присвоить установкам сервера сценариев Windows значения по умолчанию. В справке, отображаемой по команде wscript /? , параметр //S трактуется как ”Сохранить для данного пользователя текущие параметры командной строки”, что не совсем верно. Попробуйте в качестве сервера сценариев по умолчанию задать cscript.exe, а затем выполните команду wscript //S , в результате чего, сервером сценариев по умолчанию снова станет wscript.exe

wscript //T:5 //Job:Str1 hello1.wsf — аналогично рассмотренным выше примерам, но на выполнение сценария отводится 5 секунд. По истечении указанного времени сценарий будет принудительно завершен ( например, если пользователь не отвечает на запрос сценария). При использовании параметра //T:, ограничивается время выполнения текущего сценария, в отличие от настройки параметра ”Остановить сценарий после указанного числа секунд”, который ограничивает время выполнения всех сценариев. Если ограничение по времени в настройках сервера сценариев и заданное параметром //T: различаются, то будет применено значение указанное в //T:

Читайте также:
Антицеллюлитная программа что это

Параметры Logo и Nologo имеют практический смысл при использовании сервера сценариев в консольном режиме (cscript.exe). Регистр символов в параметрах командной строки значения не имеет.

Источник: ab57.ru

Windows Script Host (WSH) — управление программами.

Окно Windows Script Host

Windows Script Host (WSH) — управление программами.

Windows Script Host (WSH) — компонент Microsoft Windows, предназначенный для запуска сценариев на скриптовых языках JScript и VBScript и на других дополнительно устанавливаемых языках (например, Perl).

До появления Windows Script Host (WSH) и PowerShell, командная строка являлась фактически единственным средством для решения внештатных задач. Приходилось изучать базовые команды CMD, переход по каталогам и дискам, создание папок и файлов. Даже в нынешнее время приходится использовать базовые утилиты командной оболочки, взять те же ping, ipconfig, msconfig.

Windows Script Host (WSH) – это программа, точнее две: wscript.exe (позволяет запускать сценарии в оконном интерфейсе) и cscript.exe (запуск скриптов в режиме командной строки). Так как Windows Script Host (WSH) не требует установки и входит в состав практически всех версий Windows, то можно сразу приступать к программированию. У пользователя есть выбор, писать программный код на языке VBScript (файлы с расширением .vbs) или JScript (файлы с расширением .js).

Windows Script Host (WSH) — компонент Microsoft Windows

Преимущества сценариев Windows Script Host (WSH) по сравнению с рядовыми файлами командной оболочки:

— Расширяемость возможностей за счет подключения внешних объектов. Объекты – это файлы (библиотеки) с набором различных функций для выполнения определенных задач: создание графического интерфейса (WindowSystemObject), работа со ссылками на сайте (Chilkat.Spider) или работа с протоколом HTTP (Компоненты для создания HTTP запроса), однако, Windows Script Host (WSH) предоставляет и собственные объекты, например, работа с файловой системой (FileSystemObject), или взаимодействие с системой (WScript.Shell).

— Взаимодействие Windows Script Host (WSH) с Windows Management Instrumentation (Инструментарий управления Windows). WMI содержит практически неограниченные возможность для администрирования системы, с его помощью можно получить доступ практически к каждому элементу (как оборудование, так и системная информация).

— Универсальность использования Windows Script Host (WSH). Нет необходимости устанавливать программные пакеты по несколько сотен мегабайт, вы можете написать сценарий и потом запустить его на другом компьютере, да и компиляция отсутствует, что позволяет в любой момент изменить программный код.

Возможно, читая статьи о Windows Script Host (WSH) , вы задавались вопросом: «Да что такого особенного в этом скрипте?». Действительно, править реестр можно и из reg-файлов, запускать программы, работать с сетевыми дисками, файлами и папками можно из bat-файлов. Но WSH имеет более богатые возможности, работать с ним проще и удобнее.

Для особо сомневающихся хочу затронуть такую область при работе на компьютере, где бессильны все остальные средства (за исключением специально написанных программ). Речь в ней пойдет о возможности управлять другими приложениями Windows (консольными приложениями для MS-DOS управлять не удастся). Windows Script Host (WSH) — управление программами.

В этот раз теории будет совсем немного, я постараюсь привести много любопытных примеров, а дальше все будет зависеть от вашей фантазии.

Что я подразумеваю под управлением другими приложениями? Активизацию существующего окна и имитацию нажатия в нем различных клавиш клавиатуры. Люди для этого пишут умные и сложные программы, а мы напишем простенький Скрипт с тем же эффектом.

Начнем с того, что попытаемся активизировать окно уже запущенной программы:

//JScript
var WshShell = WScript.CreateObject(«WScript.Shell»);
WshShell.AppActivate(«Блокнот»);

Для активизиции окна мы воспользовались методом WshShell.AppActivate(). В качестве параметра передается какая-то текстовая строка. Скрипт Windows Script Host (WSH) осуществляет поиск окна, название которого эквивалентно переданной строке.

Если такого окна нет, то будет вестись поиск окна, начало заголовка которого совпадает со строкой и в последнюю очередь ведется поиск окна, окончание заголовка которого эквивалентно переданной строке. Это очень удобно, т.к., например, в Word’e заголовок окна меняется в зависимости от имени редактируемого файла, но начало всегда «Microsoft Word». Если окон, удовлетворяющих условию поиска несколько, то активизируется первое найденное окно. Надо отметить, что если окно программы свернуто на панель задач, то оно не разворачивается, а просто кнопка приложения становится «нажатой».

Microsoft - Windows Script Host 2.0. Developer

Но просто сама по себе такая возможность мало что дает полезного, но вот в связке со следующим методом можно добиться потрясающего эффекта. И метод этот SendKeys(). Итак, давайте напишем небольшой забавный Скрипт, позволяющий слегка посмеяться над друзьями:

//JScript
var WshShell = WScript.CreateObject(«WScript.Shell»);
KL = true;
while (KL) if (WshShell.AppActivate(«Блокнот»)) WriteWord();
KL = false;
>
if (WshShell.AppActivate(«Microsoft Word»)) WriteWord();
KL = false;
>
WScript.Sleep(10000);
>
function WriteWord() WshShell.SendKeys(«THE «);
WScript.Sleep(300);
WshShell.SendKeys(«MATRIX «);
WScript.Sleep(300);
WshShell.SendKeys(«HAS «);
WScript.Sleep(300);
WshShell.SendKeys(«YOU. «);
WScript.Sleep(300);
>

Каждые десять секунд производится проверка на наличие открытого окна Ворда или Блокнота и если таковое обнаруживается, туда выводится текст, после чего Скрипт завершает свою работу. Гораздо более красивого эффекта можно добиться, если выводить надпись по одной букве, но тогда размер исходника будет раза в три длиннее и я не стал его приводить из-за экономии места. Windows Script Host (WSH) — управление программами.

Вот похожий пример написанный на VBScript:

set WshShell = WScript.CreateObject(«WScript.Shell»)
KL = true
do while KL
if WshShell.AppActivate(«Microsoft Word») then
WriteWord()
KL = false
end if
WScript.Sleep 3000
loop
function WriteWord()
WshShell.SendKeys «HELLO WORLD!»
end function

Я привел его для того, чтобы любители именно этого скриптового языка могли по аналогии переделать все остальные примеры в данной статье Windows Script Host (WSH) , потому что они будут на JScript.

Вынужден сразу разочаровать многих: русские буквы корректно в окно программы не передаются, так что придется обходиться только латинскими.

Помимо алфавитно-цифровых символов в приложения можно передавать и нажатие специальных клавиш, например, Enter, Tab, F1. F12, Alt, Shift, Ctrl, и т.п. В таблице приведены специальные обозначения для этих клавиш:

Клавиша

Код

Клавиша

Код

Для указания клавиш Alt, Shift, Ctrl существуют специальные коды:

Клавиша

Код

Так если вы хотите передать нажатие нескольких клавиш с Shift-ом, то вам надо выполнять команду: WshShell.SendKeys(«+(ABC)»);, если только первую: WshShell.SendKeys(«+ABC»);.

Легко заметить, что такие символы как +, ^, % зарезервированы под обозначение специальных клавиш, так что просто так передать эти (и некоторые другие) символы не удастся. Для этого надо заключить их в фигурные скобки: «», «». Вот полный список символов, которые необходимо заключать в фигурные скобки: +, ^, %, ~, (,), , [, ].

Если вы хотите передать несколько нажатий подряд одной клавиши, то вам вовсе не обязательно все их набирать в скрипте, можно просто указать количество повторений. Так, строка WshShell.SendKeys(«»); эквивалента сотне нажатий клавиши «А». Правда, есть ограничение на количество возможных повторений нажатия клавиш.

Это значение лежит где-то между 8150 и 8180 раз (более точно мне было лень выяснять). При превышении этого значения в скрипте будет выдана ошибка. Windows Script Host (WSH) — управление программами.

На этом покончим с теорией и рассмотрим еще парочку примеров работы с программами именно с использованием клавиш, приведенных в таблице. Для начала поиздеваемся над бедными юзерами, а именно закроем Word без сохранения изменений в файле:

var WshShell = WScript.CreateObject(«WScript.Shell»);
KL = true;
while (KL) if (WshShell.AppActivate(«Microsoft Word»)) WriteWord();
KL = false;
>
WScript.Sleep(3000);
>
function WriteWord() WshShell.SendKeys(«%»);
WScript.Sleep(300);
WshShell.SendKeys(«»);
WScript.Sleep(300);
WshShell.SendKeys(«»);
>

Комментировать не буду, итак все достаточно подробно объяснено по ходу статьи. Конечно, если вы не лишены гуманизма, то можно предварительно сохранить документ в какой-нибудь файл:

var WshShell = WScript.CreateObject(«WScript.Shell»);
KL = true;
while (KL) if (WshShell.AppActivate(«Microsoft Word»)) WriteWord();
KL = false;
>
WScript.Sleep(3000);
>
function WriteWord() WshShell.SendKeys(«%»);
WScript.Sleep(300);
WshShell.SendKeys(«»);
WScript.Sleep(300);
WshShell.SendKeys(«»);
WScript.Sleep(300);
WshShell.SendKeys(«»);
WScript.Sleep(300);
WshShell.SendKeys(«»);
WScript.Sleep(300);
WshShell.SendKeys(«»);
WScript.Sleep(300);
WshShell.SendKeys(«»);
WScript.Sleep(300);
WshShell.SendKeys(«test»);
WScript.Sleep(300);
WshShell.SendKeys(«»);
>

Довольно забавно наблюдать, как пункт меню вдруг сам открывается, курсор перемещается по пунктам, а затем сохраняется документ. Конечно, проще было бы использовать «горячие» клавиши, но в русской версии это не пройдет (из-за некорректной передачи русских букв, о чем я уже писал выше), так что приходится выкручиваться таким способом, ну, а для английской версии легко переделать Скрипт под использование «горячих» клавиш, что несколько сократит его размер. Windows Script Host (WSH) — управление программами.

Если вы помните, несколько лет назад был ажиотаж вокруг Spedia.net — спонсора платящего деньги за время, проведенное в интернете. Многие люди пытались на этом заработать, а учитывая тот факт, что некоторые провайдеры давали бесплатный доступ в ночное время, программеры начали писать утилитки, имитирующие работу пользователя за компьютером (запуск браузера, почтового клиента, серфинг по сайтам, получение почты и т.п.).

Спедия по мере сил боролась с ними, блокируя оплату юзерам, использующим такие программы. Многим хотелось написать свою утилитку имитации работы, да еще чтобы ее не отловили, но для этого надо было знать программирование, причем там использовались не самые тривиальные знания. С помощью материала данной статьи, я думаю, теперь любой сможет написать нечто похожее :). Правда, сейчас это уже никому не нужно, но найти для полученных знаний более достойное применение вполне возможно.

Windows Script Host (WSH) — управление программами.

Источник: w512.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru