Задача: на машине стоят 3 диска(c, d, e). Нужно добавить в расписание проверку сразу нескольких дисков на ошибки с помощью команды chkdsk с поиском поврежденных секторов и восстановлением, и выводом на экран списка файлов.
Решение: создать CMD или BAT и добавить в расписание. Содержимое:
echo Y|chkdsk c: /F /R /V && echo Y|chkdsk d: /F /R /V && echo Y|chkdsk e: /F /R /V
Выполнение нескольких команд в консоли Windows (cmd)
Для того чтобы выполнить несколько команд из одной командной строки, нужно объединить их с помощью символа условной обработки:
-
команда1 & команда2
— Используется для разделения нескольких команд в одной командной строке. В cmd.exe выполняется первая команда, затем вторая команда. -
команда1 && команда2
— Запускает команду, стоящую за символом &&, только если команда, стоящая перед этим символом была выполнена успешно. В cmd.exe выполняется первая команда. Вторая команда выполняется, только если первая была выполнена успешно. -
команда1 || команда2
— Запускает команду, стоящую за символом ||, только если команда, стоящая перед символом || не была выполнена. В cmd.exe выполняется первая команда. Вторая команда выполняется, только если первая не была выполнена (полученный код ошибки превышает ноль).
Пример:
attrib -H "file.txt" && ren "file.txt" "file.tmp"
С файла file.txt будет снят атрибут «Скрытый» и если команда attrib
при этом не вернёт ошибку, файл будет переименован в file.tmp.
Как в bat файле, автоматически ответить «ДА», на запрос о подтверждении
Некоторые команды при выполнении требуют подтверждения, например потенциально опасного действия. Команды 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 будут удалены.
Источники:
http://palexa.pp.ua/blog/windows/pishem-v-cmd-bat/kak-v-bat-fajle-avtomaticheski-otvetit-da-na-zapros-o-podtverzhdenii.html
http://xandeadx.ru/blog/raznoe/38