Некоторые команды при выполнении требуют подтверждения, например потенциально опасного действия. Команды format
или del
предварительно запросят подтверждения на дальнейшее выполнение. Если одна из этих команд выполняется в пакетном bat файле, то запрос на подтверждение остановит выполнение bat файла и он будет ждать от пользователя выбора одного из предложенных вариантов. Причем, если результат выполнение пакетного bat файла перенаправлен в лог-файл, то пользователь не увидит запроса на подтверждение и bat файл будет выглядеть зависшим. Так как быть, если надо автоматически ответить "ДА"?
Для исправления этой проблемы, можно перенаправить нужный ответ в команду, а именно, выполнить обратное действие для перенаправления вывода результатов работы команды в файл.
Давайте на примере посмотрим как выглядит такой запрос на подтверждение потенциально опасного действия. Создадим на диске С, например, папку test. Создадим в ней или скопируем в нее два любых файла. Далее, откроем командную строку и выполним следующую команду:del C:\test
Эта команда должна удалить все файлы из указанной папки. Но предварительно будет выдан запрос для подтверждения следующего содержания:C:\test\*, Продолжить [Y(да)/N(нет)]?
Выполнение команды будет остановлено до тех пор, пока не будет нажата либо клавиша Y, либо клавиша N. При выполнении bat файла в автоматическом режиме, его исполнение остановится.
Чтобы избежать этого используем перенаправление, которое осуществляется при помощи символа -"|"
(без кавычек)
Вертикальная черта говорит о том, что вместо вывода символа на экран его надо «отдать» следующей за символом команде. Проверим работу перенаправления. Давайте проверим и выполним в командной строке следующую команду:
echo Y|del C:\test
На экране будет показан запрос на подтверждение удаления всех файлов в папке test, но уже с положительным ответом (Y)
.Все файлы из папки test будут удалены.