Чтение онлайн

ЖАНРЫ

Windows Script Host для Windows 2000/XP

Попов Андрей Викторович

Шрифт:

 Root.appendChild(NewElem);

 //Подставляем в качестве содержимого элемента App

 //значение поля House объекта PersRec

 Root.lastChild.text=PersRec.App;

 //Создаем элемент Note

 NewElem=XMLDoc.createElement("Note");

 //Добавляем новый элемент в XML-файл (внутри элемента Person)

 Root.appendChild(NewElem);

 //Подставляем в качестве содержимого элемента App

 //значение поля House объекта PersRec

 Root.lastChild.text=PersRec.Note;

 //Сохраняем
содержимое XML-файла на диске

 XMLDoc.save(PathBook);

}

//Добавление новой записи в книжку

function AddRecord {

 //Заполняем поля объекта PersonRec

 MakePersonRec;

 //Сохраняем данные из объекта PersonRec в XML-файл

 RecordToFile(PersonRec);

}

//Построение путей к файлам

function InitPath {

 BasePath=WshShell.CurrentDirectory+"\\";

 //Путь к файлу с данными

 PathBook=BasePath+"book.xml";

}

//Основная запускная функция

function Main {

 var Res;

 //Создаем объект WshShell

 WshShell = WScript.CreateObject("WScript.Shell");

 //Определяем пути к файлам

 InitPath;

 //Запрос на создание нового ключа

 Res=WshShell.Popup("Добавить запись в \n"+PathBook+"?",0,

"Записная книжка",vbQuestion+vbYesNo);

 if (Res==vbYes) { //Нажата кнопка Да

//Добавляем новую запись в книжку

AddRecord;

//Выводим информацию на экран

WshShell.Popup("Новая запись\n\n"+PersonRec.LastName+" "+

PersonRec.Name+"\n"+PersonRec.Phone+"\n"+

PersonRec.Street+", "+PersonRec.House+"-"+PersonRec.App+"\n\n"+

"добавлена!",0, "Записная книжка",vbInformation+vbOkOnly);

 }

}

//Запускаем основную функцию

Main;

</script>

</job>

</package>

Итак, у нас теперь имеется многозадачный WS-файл PhoneBook.wsf, обеспечивающий необходимую функциональность для работы с записной книжкой, и следующая задача состоит в организации более или менее удобного диалога с пользователем для запуска заданий из этого файла.

Обработка параметров командной строки

Самый простой вариант организовать диалог с пользователем состоит в использовании параметров командной строки. Напомним, что объектная модель WSH предоставляет несколько методов, которые позволяют производить анализ именных и безымянных параметров (см. разд. "Работа с параметрами командной строки сценария" главы 2), с которыми был запущен сценарий, а в схеме WS XML есть несколько специальных элементов (

<runtime>
, <
named>
,
<unnamed>
,
<description>
и
<example>
), предназначенных
для быстрого создания встроенной справки, описывающей синтаксис сценария и смысл каждого из параметров.

Для нашего примера мы создадим сценарий ArgMenu.wsf, в котором будем анализировать аргументы командной строки и в зависимости от них запускать то или иное задание из файла PhoneBook.wsf. Названия и назначения именных параметров, которые мы будем использовать, приведены в табл. 7.1.

Таблица 7.1. Параметры командной строки сценария для работы с записной книжкой

Название параметра Назначение
/L
Просмотр всех записей книжки (сортировка по фамилии)
/F
Поиск записей по фамилии, которая вводится в диалоговом окне
Добавление записи по фамилии (данные вводятся в диалоговом окне)
/D
Удаление записи (фамилия для удаления вводится в диалоговом окне)

Если запустить сценарий ArgMenu.wsf вообще без параметров, либо с параметрами, не указанными в табл. 7.1, то на экран будет выведена встроенная справка (рис. 7.1).

Рис. 7.1. Встроенная справка для сценария ArgMenu.wsf

В листинге 7.4 приводится полный текст сценария ArgMenu.wsf.

Листинг 7.4. Обработка параметров командной строки сценария для работы с записной книжкой

<job id="ArgMenu">

 <runtime>

<description>

Сценарий для работы с телефонной книжкой

</description>

<named name="L" helpstring="Просмотр содержимого книжки" type="simple" required="false"/>

<named name="F" helpstring="Поиск по фамилии" type="simple" required="false"/>

<named name="A" helpstring="Добавление записи" type="simple" required="false"/>

<named name="D" helpstring="Удаление записи" type="simple" required="false"/>

 </runtime>

 <script language="JScript">

var WshShell;

WshShell=WScript.CreateObject("WScript.Shell");

if ((WScript.Arguments.Named.Exists("L")) ||

(WScript.Arguments.Named.Exists("l"))) {

WshShell.Run("wscript PhoneBook.wsf //Job:SortName");

WScript.Quit;

}

if ((WScript.Arguments.Named.Exists("F")) ||

(WScript.Arguments.Named.Exists("f"))) {

WshShell.Run("wscript PhoneBook.wsf //Job:FindName");

WScript.Quit;

}

if ((WScript.Arguments.Named.Exists("A")) ||

(WScript.Arguments.Named.Exists("a"))) {

WshShell.Run("wscript PhoneBook.wsf //Job:AddRec");

Поделиться с друзьями: