WSH скрипты на JScript — Урок 2

Продолжаем изучение WSH скриптов на языке JScript, и сегодня мы поговорим более подробно об этом языке программирования. Рассмотрим наиболее распространенные объекты, методы, а также напишем примеры WSH скриптов, в которых будем использовать эти методы и объекты.

Напомню, что это уже вторая статья по изучению данной технологии и языка Jscript, и для того чтобы Вы лучше понимали, то, о чем мы сегодня будем разговаривать, прочитайте первую статью Основы языка JScript — написание WSH скриптов, если Вы ее еще не читали. Так как в ней рассматриваются основы WSH скриптов и в частности языка Jscript.

Теория у нас была ранее, поэтому перейдем сразу к практике и начнем уже с упомянутого объекта в прошлой статье это – Wscript.

Объект Wscript

Объект Wscript – это один их главных объектов в WSH. С помощью него можно создавать другие объекты, держать связь с ними, выводить информацию в виде всплывающего сообщения, а также он позволяет получить информацию о запущенном скрипте.

У данного объекта есть несколько свойств и методов, поговорим о них.

Свойства объекта:

  • Arguments – на основе его создается объект WshArguments, и в котором хранится все передаваемые параметры скрипту, в том числе, например, путь и название файла, который необходимо обработать;
  • StdErr, StdIn, StdOut – с помощью этих свойств можно получить доступ к входным и выходным потокам, но только в том случае, если скрипт был запущен в консольном режиме.

Далее давайте рассмотрим основные методы данного объекта.

  • Createobject – метод для создания и доступа к другим объектам;
  • ConnectObject – метод соединения с объектом;
  • DisconnectObject – метод отсоединения от объекта;
  • Echo – вывод сообщений на экран;
  • Sleep – метод для временной остановки сценария, т.е. скрипт останавливается «Засыпает» на определенный промежуток времени. Ему передается параметр времени, например, 5 секундам соответствует 5000.

Чтобы закрепить все выше перечисленное, давайте напишем простенький скрипт, который просто считает введенные параметры и выведет их на экран, а также мы остановим работу сценария на 5 секунд и еще разок выведем сообщение.

Для запуска скрипта во-первых, скопируйте код ниже в текстовый файл и сохраните с расширением .js. Для того чтобы запустить его с параметрами, откройте командную строку (cmd.exe), перейдите в каталог со скриптом (cd «путь к каталогу») и запустите его, например:

test.js 1 2 3

где 1 2 3 параметры, пишутся с пробелом.

Примечание! В остальных примерах мы не будем передавать параметры, поэтому можно просто запускать скрипт путем двойного клика. Если в будущем у Вас возникнет необходимость в качестве параметра передавать файл, можно запускать как из командной строки (например, test.js C:\folder\name_file), так и путем простого перетаскивания нужного файла на файл скрипта.

Пример 1 — Вывод сообщения

   
   //получаем доступ ко всем параметрам через свойства Arguments 
   var objArgs = WScript.Arguments;
   //объявляем переменные
   var i;
   var str = 'Введенные параметры: \n';
   //циклом считываем все параметры
   for (i=0; i<=objArgs.Count()-1; i++){
        str = str + objArgs(i)+'\n';
   }
   //выводим на экран введенные параметры
   WScript.Echo(str+"\n"+"Нажмите OK и через 5 секунд появится другое сообщение");
   //останавливаем работу скрипта на 5 секунд
   WScript.Sleep(5000);
   //еще раз выводим сообщение
   WScript.Echo("Отработал");

Идем далее, и на очереди объект WshNetwork.

Объект WshNetwork

WshNetwork – объект работы с ресурсами локальной сети. Он поможет в определение имени пользователя, компьютера, домена, в который входит компьютер, а также можно подключать сетевые диски и принтера.

Объект WshNetwork имеет следующие свойства:

  • ComputerName — имя компьютера;
  • UserDomain — имя домена;
  • UserName — имя пользователя.

У данного объекта есть свои методы:

  • AddPrinterConnection — используется для подключения локального порта к сетевому принтеру. В качестве параметров передаются:

AddPrinterConnection (имя локального порта, имя сетевого принтера [,сохранить в профиле true/false] [,имя пользователя] [,пароль])

  • EnumNetworkDrives – возвращает список сетевых дисков и их пути. В первом элементе буква, во втором путь. Поэтому когда будем считывать эти данные циклом, шагом будет служить 2 элемента;
  • EnumPrinterConnections — возвращает список подключенных принтеров;
  • MapNetworkDrive – подключает сетевой ресурс. В качестве параметров можно передавать:

MapNetworkDrive (локальное имя диска, что подключаем, [сохранить в профиле true/false], [,имя пользователя] [,пароль])

  • RemoveNetworkDrive — отключает подключенный сетевой диск. В качестве параметров:

RemoveNetworkDrive (что отключаем, [игнорируем, если используется true/false], [,удалить из профиля true/false])

  • RemovePrinterConnection — отключает подключенный сетевой принтер. Параметры:

RemovePrinterConnection (что отключаем, [игнорируем, если используется true/false], [,удалить из профиля true/false])

  • SetDefaultPrinter — делает заданный принтер принтером по умолчанию. Один единственный параметр:

SetDefaultPrinter(какой принтер)

Ну и как обычно пример, давайте выведем имя пользователя, имя компьютера и список всех подключенных сетевых дисках в виде сообщения.

Пример 2 — Выводим имя пользователя, имя компьютера и сетевые диски

   
   //Объявляем переменные
   var WshNetwork,str,i; 
   //Создаем объект WshNetwork
   WshNetwork = WScript.CreateObject("WScript.Network");
   //начинаем формировать строку 
   str="Сетевые параметры компьютера :\n\n";
   str+="Имя компьютера: "+WshNetwork.ComputerName+"\n";
   str+="Имя пользователя: "+WshNetwork.UserName+"\n";
   str+="Имя домена: "+WshNetwork.UserDomain+"\n\n";
   str+="Список подключенных сетевых дисков\n\n";
   //получаем список всех подключенных сетевых дисков
   NetDisk = WshNetwork.EnumNetworkDrives();
   //перебираем циклом список дисков 
   for (i=0;i<=NetDisk.Count()-2;  i=i+2) {  
    if (NetDisk(i)==''){
                continue;
   }  else {
                  str+=NetDisk(i)+"  "+NetDisk(i+1)+"\n";
           }
   }
   //выводим на экран сформированную строку
   WScript.Echo(str);

Переходим к следующему объекту WshShell.

Объект WshShell

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

Свойства объекта:

  • CurrentDirectory — хранится полный путь к текущему каталогу (из которого был запущен скрипт);
  • Environment — содержит объект WshEnvironment, который обеспечивает доступ к переменным среды операционной системы;
  • SpecialFolders — содержит объект WshSpecialFolders для доступа к специальным папкам Windows.

Методы объекта:

  • AppActivate(какой процесс) – делает активным указанный процесс или программу с заданным названием, если конечно она запущена;
  • CreateShortcut(путь) – создает, изменяет ярлыки windows.
  • Popup – создает сообщение windows. Мы его уже затрагивали в прошлой статье. В качестве параметра можно указывать:

Popup(текст, [сколько будет висеть сообщение в сек] , [заголовок сообщения], [тип иконки]) ;

  • RegDelete(название параметра или раздела)  — для удаления параметра или раздела целиком в реестре;
  • RegRead(название параметра или раздела) – читает значения реестра;
  • RegWrite – запись значения в реестр. Могут передаваться следующие параметры:

RegWrite(куда пишем, значение [,тип значения]);

  • Run(что именно) – запускает новое приложение;
  • SendKeys(что посылаем)  — посылает нажатие клавиш, то же самое, если бы Вы нажимали сами на клавиатуре.

Пример 3 — Работа с приложением и реестром Windows

Теперь пример. Он довольно простой и особо ничего не делает, но зато даст Вам понять принципы использования этих свойств и методов.

Сначала мы запустим блокнот, сделаем его активным, напишем что-нибудь путем посыла клавиш, затем закроем без сохранения, и напоследок выведем сообщение, в котором укажем, из какой папки был запущен наш скрипт и для освоения работы с реестром считаем одно значение (формат который используется в Вашей операционной системе).

   
   //Создаем объект WshShell
   var WshShell = WScript.CreateObject("WScript.Shell");
   //считываем свойство CurrentDirectory
   var folder = WshShell.CurrentDirectory;
   //считываем значение нужного нам параметра реестра
   var reg =  WshShell.RegRead("HKCU\\Control Panel\\International\\sLanguage");
   //запускаем блокнот
   WshShell.Run("notepad");
   //немного подождем, чтобы потом удачно активизировать окно блокнота
   WScript.Sleep(1000);
   //делаем активным наш блокнот
   WshShell.AppActivate("notepad");
   //посылаем нажатие клавиш, в этом случае просто буквы
   WshShell.SendKeys("hello");
   //посмотрим и насладимся, что все работает! 
   WScript.Sleep(1000);
   //затем посылаем ALT+F4 для того чтобы закрыть блокнот
   WshShell.SendKeys("%{F4}");
   //посылаем нажатие вправо, для того чтобы не сохранять
   WshShell.SendKeys("{right}");
   //посылаем enter
   WshShell.SendKeys("{enter}");
   //выводим сообщение на экран, с заголовком, нужной нам иконкой и нашими данными
   WshShell.Popup("Скрипт запущен из "+folder+"\nФормат ОС - "+reg, 0, 'Сообщение', 64);

По-моему довольно все просто и понятно!

В прошлой статье мы работали с excel, теперь давайте попробуем сделать что-нибудь в word.

Пример 4 – Работа с Word

Давайте просто создадим word документ, добавим таблицу и заполним ее некими данными. Вместо вымышленных данных можно использовать данные, например, из текстового файла, как это мы делали в прошлый раз, т.е. считать данные из текстового файла и записать их в таблицу word.

   
   //объявляем переменные
   var obj,word,cells;  
   var numCol = 2;//количество колонок в таблице
   var numRow = 1;//количество строк, у нас одна, но мы ее динамически увеличиваем
   var i=1; //для цикла
   var perehod = 12;//константа для перехода в новую ячейку
   var tabLine = 1;//сетка таблицы, 0 нет сетки
   var tabSize = 0;//для авторазмера таблицы поставить 1
   obj=new ActiveXObject("Word.Application");//создаем объект word
   word=obj.Documents.Add();//создаем новый документ word
   obj.Visible=true;//запуск графического интерфейса
   cells=obj.Selection;//Создаем объект Selection
   cells.Font.Size=14; //Задаем размер шрифта
   cells.ParagraphFormat.Alignment=1; //Выравнивание по центру
   cells.Font.Bold=true;//Устанавливаем полужирный шрифт
   cells.TypeText("Пробная таблица \n"); //Пишем заголовок таблицы
   cells.Font.Bold=false; //убираем полужирный шрифт
   //создаем таблицу в word
   obj.ActiveDocument.Tables.add(cells.range, numRow, numCol, tabLine,tabSize);
   cells.TypeText ('Порядковый номер');//заголовок первого столбца
   cells.ParagraphFormat.Alignment=1;//Выравнивание по центру
   cells.MoveRight(perehod);//перевод на новую ячейку
   cells.TypeText ('Наименование');//заголовок второго столбца
   cells.ParagraphFormat.Alignment=1;//Выравнивание по центру
   //циклом записываем данные
   do {
        cells.MoveRight(perehod);//перевод на новую ячейку
        cells.TypeText (i+'');//запись значения
        cells.MoveRight(perehod);//перевод на новую ячейку
        cells.TypeText ('Строка с номером '+i);//запись значения
        i++;//увеличиваем переменную
   } while(i<=5)
   cells.MoveRight();//перевод на новую строку, выход из таблицы
   cells.TypeText ('\n\n'); //сделаем пару enter'ов
   cells.TypeText ('Пишем дальше что хотим!');
   cells.ParagraphFormat.Alignment=0;//Выравнивание по левому краю

Я думаю на сегодня достаточно, надеюсь, эти примеры помогут Вам освоить WSH на Jscript. В дальнейшем мы продолжим изучение WSH и в частности Jscript, удачи!

Понравилась статья? Поделиться с друзьями:
Заметки IT специалиста
Добавить комментарий

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