В листинге 7.4 приводится полный текст сценария ArgMenu.wsf.
<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');
WScript.Quit();
}
if ((WScript.Arguments.Named.Exists('D')) ||
(WScript.Arguments.Named.Exists('d'))) {
WshShell.Run('wscript PhoneBook.wsf //Job:DelRec');
WScript.Quit();
}
//Ни один из нужных аргументов не был указан, выводим
//описание параметров
WScript.Arguments.ShowUsage();
</script>
</job>
Теперь, если понадобится ввести дополнительную функцию при работе с записной книжкой (например, поиск по номеру телефона), нужно будет в файл PhoneBook.wsf добавить задание с новым идентификатором, а в файл ArgMenu.wsf — обработку нового параметра командной строки.
Организация диалога с помощью кнопочного меню
Вторым вариантом организации диалога, который мы рассмотрим, является кнопочное (командное) меню. Принцип его работы в нашем примере остается практически тем же, что и при описанной выше обработке аргументов командной строки — пользователь должен в диалоговом окне ввести символ, соответствующий одной из описанных в этом окне команд (рис. 7.2). Этот символ анализируется в сценарии, и в зависимости от его значения вызывается то или иное задание из файла PhoneBook.wsf.

Рис. 7.2. Кнопочное меню для работы с записной книжкой
Диалоговое окно, показанное на рис. 7.2, выводится в цикле while
, в котором с помощью оператора switch
анализируется введенный пользователем символ. Выход из цикла совершается, если введенный символ совпадает с 'q' или 'Q'.
Текст сценария ComMenu.wsf, реализующего кнопочное меню для работы с записной книжкой, приводится в листинге 7.5.
<job id='ComMenu'>
<script language='VBScript' src='WSHInputBox.vbs'/>
<script language='JScript'>
var WshShell,SMenu,Res;
WshShell=WScript.CreateObject('WScript.Shell');
SMenu='[L] - Просмотр содержимого книжки
';
SMenu+='[F] - Поиск по фамилии
';
SMenu+='[A] - Добавление записи
';
SMenu+='[D] - Удаление записи
';
SMenu+='[Q] - Выход из сценария
';
SMenu+='
Команда:';
Res='';
while ((Res!='q') && (Res!='Q')) {
Res=WSHInputBox(SMenu,'Записная книжка');
switch (Res) {
case 'L': {
WshShell.Run('wscript PhoneBook.wsf //Job:SortName',1,true);
break;
}
case 'l': {
WshShell.Run('wscript PhoneBook.wsf //Job:SortName',1,true);
break;
}
case 'F': {
WshShell.Run('wscript PhoneBook.wsf //Job:FindName',1,true);
break;
}
case 'f': {
WshShell.Run('wscript PhoneBook.wsf //Job:FindName',1,true);
break;