Написание сценариев на основе служб терминалов (часть 7)
- Написание сценариев на основе служб терминалов (часть 1)
- Написание сценариев на основе служб терминалов (часть 2)
- Написание сценариев на основе служб терминалов (часть 3)
- Написание сценариев на основе служб терминалов (часть 4)
- Написание сценариев на основе служб терминалов (часть 5)
- Написание сценариев на основе служб терминалов (часть 8)
- Написание сценариев на основе служб терминалов (часть 9)
- Написание сценариев на основе служб терминалов (часть 10)
- Написание сценариев на основе служб терминалов (часть 11)
- Написание сценариев на основе служб терминалов (часть 13)
- Написание сценариев на основе служб терминалов (часть 14)
В предыдущей статье этой серии я показал вам, как перенаправить вывод команды в текстовый файл, а затем объяснил, что каждое последующее использование файла приведет к добавлению выводимой информации в конец файла. Я также объяснил, что в реальном мире часто бывают ситуации, когда вам может понадобиться создать текстовый файл с уникальным именем, а не просто добавить новую информацию в конец существующего файла журнала.
Ближе к концу моей предыдущей статьи я предложил две строки кода ниже в качестве механизма для создания файлов журнала с уникальными именами:
for /F «tokens=2,3,4 delims=/» %%i in ('date /t') do set datefile=%%i%%j%%k.log
Запросить пользователя > %datefile%
К сожалению, у меня не было возможности объяснить, что это за строки кода и что они делают. Поскольку создание файлов журналов является очень важной концепцией, я хочу посвятить эту статью объяснению того, как работает код, показанный выше, и как вы могли бы его использовать.
Как я упоминал ранее, целью примера кода является создание файла журнала с уникальным именем файла. Часть проблемы с созданием уникального имени файла заключается в том, что если вы сделаете имя файла полностью случайным, то будет трудно понять, какой файл содержит какой журнал. В этом случае я разработал приведенный выше код для создания уникального имени файла, основанного на текущей дате. В каком-то смысле имя файла не является действительно уникальным, потому что, если вы запустите приведенные выше команды дважды в один день, то оба экземпляра создадут одно и то же имя файла. Если вам необходимо создавать отдельные файлы журнала несколько раз в течение дня, вы можете сделать имя файла уникальным, добавив текущее время к дате.
Прежде чем я покажу вам, как работают приведенные выше команды, давайте посмотрим, как эти команды работают в реальной среде. Как вы можете видеть на рисунке A, я создал текстовый файл с именем USER.BAT, а затем включил в него приведенные выше команды. Если вы не знакомы с расширением.BAT, файлы.BAT известны как пакетные файлы. Пакетные файлы — это просто текстовые файлы, содержащие одну или несколько команд. Назначение пакетного файла — позволить вам создавать сценарии на основе команд, которые обычно приходится вводить по отдельности в командной строке.
Рисунок А: Вот как команды работают в реальном мире
Если вы посмотрите на рисунок выше, вы увидите, что первое, что я сделал, это использовал команду TYPE для отображения содержимого файла USER.BAT. Этот шаг на самом деле не является необходимым, я просто сделал это, чтобы показать вам, что я использую тот же код, что и в предыдущей статье.
Обратите внимание, что в следующей командной строке я ввел команду USER. Каждый раз, когда вы создаете пакетный файл, имя, присвоенное вам пакетному файлу, обрабатывается так, как если бы оно принадлежало исполняемому файлу. В этом случае имя моего пакетного файла — USER.BAT, поэтому, когда я ввожу команду USER, Windows запускает пакетный файл.
За следующими тремя командными строками, которые вы видите на рисунке выше, следуют различные команды. Важно, чтобы вы понимали, что я не вводил эти команды вручную. Вместо этого Windows выполняет каждую из команд, найденных в пакетном файле, как если бы эти команды были введены вручную.
Одна вещь, на которую я хочу обратить внимание, прежде чем я двинусь дальше, это то, что если вы посмотрите на верхнюю часть снимка экрана, где я показывал содержимое пакетного файла, последняя строка пакетного файла гласила:
Запросить пользователя > %datefile%
Однако, когда пакетный файл обрабатывает команду Query User, команда выглядит следующим образом:
Запросить пользователя 1>04122008.log
Я хочу сказать, что, хотя пакетные файлы предназначены для последовательного выполнения команд, как если бы они были напечатаны, есть одно важное различие между командой пакетного файла и командой, которая была введена вручную. Когда вы обрабатываете команды как часть пакетного файла, у вас есть возможность основывать команду на результатах предыдущей команды. В этом случае переменная %datefile% заменяется на 04122008. Если вам интересно, откуда взялось это число, то оно было создано на основе сегодняшней даты, 12 апреля 2008 г. или 04-12-2008.
Как вы можете видеть на снимке экрана, я смог использовать дату для создания имени файла. В нижней части снимка экрана я использовал команду TYPE, чтобы отобразить содержимое созданного мной файла журнала, просто чтобы доказать, что этот метод работает.
Прежде чем я начну рассказывать о том, как работают отдельные команды, я хочу показать вам еще один прием. Когда вы смотрите на рисунок выше, действительно трудно отличить команды, которые были введены вручную, и те, которые были обработаны как часть пакетного файла.
Часто пакетные файлы намного длиннее и сложнее, чем тот, который я показал вам здесь, и в такой ситуации просмотр реальных команд, которые используются, может привести к прокрутке вывода сценария за пределы экрана или может затруднить его. найти. Таким образом, многие программисты начинают свои пакетные файлы со следующей команды:
@эхо выключено
Echo — это команда, которая обычно используется для отображения текста на экране или для добавления строки текста в файл. Например, если вы хотите настроить пакетный файл для отображения фразы Hello World, вы можете использовать следующую команду:
Эхо привет мир
Мы будем использовать команду echo для отображения текста в оставшейся части этой серии статей, но сейчас есть еще одно применение echo, о котором я хочу вам рассказать. Когда вы вводите команду ECHO OFF, она сообщает Windows, что вы хотите запретить отображение оставшихся команд пакетного файла и что вы хотите видеть только вывод пакетного файла, а не сами команды.
Если вы просто введете команду ECHO OFF в начале командного файла, сама команда Echo Off будет видна, а другие команды — нет. Вы можете понять, что я имею в виду, если посмотрите на рисунок B.
Рисунок Б: Команда Echo Off предотвращает отображение остальных команд.
Использование команды Echo Off работает, но появление слов Echo Off немного отвлекает. Поэтому я рекомендую вам предварять команду Echo Off знаком @. Это предотвратит повторение команды Echo Off, как показано на рисунке C.
Рисунок С: Команда @Echo Off скрывает все команды.
Итак, команда @Echo Off хорошо скрывает отдельные команды, составляющие пакетный файл, но для случайного наблюдателя это выглядит так, как будто ничего не происходит. Мы можем исправить эту «проблему», добавив в пакетный файл команду Echo, за которой следует строка текста, объясняющая, что происходит. Мы даже можем создать еще одну строку в конце файла, в которой используется команда Echo, чтобы сообщить пользователю об успешном выполнении команды. Такой скрипт может выглядеть примерно так:
@Эхо выключено
Эхо Создание лог-файла.
for /F «tokens=2,3,4 delims=/» %%i in ('date /t') do set datefile=%%i%%j%%k.log
Запросить пользователя > %datefile%
Файл эхо-журнала успешно создан.
Вы можете увидеть, как выглядит результат этого скрипта на рисунке D.
Рисунок D: Вот как выглядит вывод скрипта выше
Этот тип вывода, очевидно, намного легче читать, но с ним есть несколько проблем. Во-первых, мы не сказали пользователю, где искать файл журнала или как называется файл журнала. Во-вторых, команда просто повторяет строку текста, в которой говорится, что файл журнала был успешно создан. На данный момент сценарий не может узнать, был ли файл журнала успешно создан или нет. Я буду решать эти типы вопросов, и многое другое, как серия продолжается.
Вывод
В этой статье я начал показывать вам, как собрать различные команды в сценарий. Затем я показал вам, как очистить вывод сценария. В следующей статье этой серии я хочу сделать шаг назад и подробнее рассказать о том, как на самом деле было сгенерировано имя файла журнала.
- Написание сценариев на основе служб терминалов (часть 1)
- Написание сценариев на основе служб терминалов (часть 2)
- Написание сценариев на основе служб терминалов (часть 3)
- Написание сценариев на основе служб терминалов (часть 4)
- Написание сценариев на основе служб терминалов (часть 5)
- Написание сценариев на основе служб терминалов (часть 8)
- Написание сценариев на основе служб терминалов (часть 9)
- Написание сценариев на основе служб терминалов (часть 10)
- Написание сценариев на основе служб терминалов (часть 11)
- Написание сценариев на основе служб терминалов (часть 12)
- Написание сценариев на основе служб терминалов (часть 13)
- Написание сценариев на основе служб терминалов (часть 14)