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

   
    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 файлов. До встречи!

Понравилась статья? Поделиться с друзьями:
Заметки IT специалиста
Комментарии: 5
  1. Админ (автор)

    Продолжение темы WSH на JScript:
    WSH скрипты на JScript — Урок 2Мониторинг работоспособности сервисов на Jscript

  2. Vitalii

    Последний скрипт не работает, выдает ошибку в строке 7, символ 2, ошибка «Файл не найден». Файл my.txt лежит в той, где скрипт

    1. Админ (автор)

      Привет, скрипт работает, проверь расширение файла, должно быть .txt, а название файла my т.е. текстовой файл my

      1. Vitalii

        Выяснил в чем причина. Если программа по умолчанию выбрана не Win Script host, а запуск производить через выбор «Открыть с помощью…» то появляется ошибка.
        Спасибо.

  3. Denverino

    Скрипт работает только всю строку в одну ячейку переносит, а как по столбцам с раз делителем разносить?

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:
Нажимая на кнопку «Отправить комментарий», я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.