Я написал командный файл MS DOS, который запускает ряд команд.Условные выражения в пакетном файле
Каждая команда вызывает программу с определенными параметрами. Чтобы автоматизировать это, я объединил все команды.
Структура пакетного файла, как показано ниже:
@echo off
if %1 == "b1" (
command 1
command 2
command 3
....
) else (
command a
command b
command c
)
Я призываю его, как показано ниже:
test.bat b1
Если я прохожу b1 в качестве аргумента в пакетный файл, он будет обрабатывать последовательность команд, команду 1, команду 2, команду 3 и так далее.
Точно так же, если я хочу, чтобы выполнить ряд команд, указанных в разделе еще, я прохожу еще один аргумент:
test.bat abc
Поскольку аргумент, передаваемый в пакетный файл не равен b1, он начнет выполняя раздел else командного файла. Здесь аргумент, который я передаю (в данном случае, abc), требуется командами, командой a, командой b, командой c и т. Д. В качестве параметра.
Все это работает очень хорошо.
Однако проблема, с которой я столкнулась, заключается в том, что если я хочу завершить пакетный файл между ними (нажав Ctrl + C), он не запрашивает меня с опцией: вы хотите завершить операцию пакетной обработки? Y/N
например, скажем, командный файл обрабатывает серию команд в разделе else. В настоящее время предположим, что он выполняет команду a. Если я нажму Ctrl + C, то вместо запроса отменить операцию он отменяет выполнение команды a и автоматически переходит к команде b. Если я снова нажму Ctrl + C, он отменяет команду b и продолжит команду c и так далее.
Теперь, с другой стороны, если я пишу пакетный файл, как показано ниже:
@echo off
command a
command b
command c
и я призываю его из командной строки, как:
test.bat abc
Теперь, когда я нажимаю Ctrl + C во время выполнения командного файла, он предлагает мне отменить пакетную операцию, как ожидалось.
Похоже, что когда я добавляю условный оператор в пакетном файле, функциональность Ctrl + C каким-то образом изменяется.
Как исправить эту проблему?
Спасибо.
Нажмите на значок закрытия окна, а не нажимайте кнопку C. Или прочитайте справку из «CMD /?», Чтобы узнать, можете ли вы изменить обработку управления C/Break. Возможно, что использование 'start '"/b/w command1' будет работать. – foxidrive