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

We use cookies. Read the Privacy and Cookie Policy

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

Самый простой вариант организовать диалог с пользователем состоит в использовании параметров командной строки. Напомним, что объектная модель 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");

   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 — обработку нового параметра командной строки.