В cmd, когда мы нажимаем Ctrl+C, мы завершили целевое приложение, но если целевое приложение называют от пакетного файла, мы получаем это "Оконечное пакетное задание (Y/N)" подтверждение. Я никогда не могу помнить экземпляр, где я принял решение не завершить пакетное задание. Как мы можем пропустить это подтверждение?
AFAIK Вы не можете как это поведение, дизайном и управляется интерпретатором команд. Нет никакого метода "отображения" или даже "прерывания" этого, если Вы не декомпилируете и перекомпилировали интерпретатор непосредственно.
Если Вы ничего не должны делать в пакетном файле после того, как Ваше приложение будет обычно заканчиваться, то использование start
команда гарантирует, что пакетный файл уже закончен к тому времени, когда Вы нажимаете Ctrl-C. И следовательно сообщение не появится.
Например:
@echo off set my_command=ping.exe set my_params=-t www.google.com echo Command to be executed by 'start': %my_command% %my_params% :: When NOT using /B or /WAIT then this will create a new window, while :: execution of this very batch file will continue in the current window: start %my_command% %my_params% echo. echo This line will be executed BEFORE 'start' is even finished. So, this echo batch file will complete BEFORE one presses Ctrl-C in the other window. echo. :: Just for testing use 'pause' to show "Press any key to continue", to see :: the output of the 'echo' commands. Be sure to press Ctrl-C in the window :: that runs the 'ping' command (not in this very window). Or simply remove :: the next line when confused: pause
(Протестированный на Windows XP.)
Посмотрите этот вопрос о Переполнении стека.
Однако исправление cmd.exe не является чем-то, что я сделал бы для этого.
В моем случае это был файл ping.bat, который был правильным в моем пользовательском каталоге (C:\Users\ в Vista или C:\Documents and Settings\ в XP), который держал пакетное место неопределенно.
Этот пакетный файл выполнялся каждый раз, когда я выполнил ping от командной строки, где текущий каталог является моим пользовательским каталогом. Проверка с помощью ping-запросов из окна Run, или из каталога другого пользователя работала хорошо.
Удаленный файл из моего пользовательского dir и проблемы был разрешен!
Запустите работы, но теперь окно, открытое пакетным файлом, изменяется от опций, которые я имел, и "свойства" отключены (не ответит).
Просто перенаправьте пакет stdin к пустому указателю путем добавления <nul в конец команды.
Я боролся с этим требованием избежать "Оконечного пакетного задания" подсказка на некоторое время.
Мое последнее прозрение является чем-то вроде ловкости рук (или консоль) путем замены одного экземпляра cmd.exe
с другим. Это выполняется путем выполнения команды/программы через start cmd /k
сопровождаемый сразу exit
в .BAT
файл.
Исходная консоль исчезает и замена, можно быть остановлен чисто через Ctrl-C.
Рассмотрите следующий пример a traceroute
это может быть прервано Ctrl+C или позволено завершиться, возвратив пользователя C:\>
подсказка:
@echo off
set timeout=100
if not "%2"=="" set timeout=%2
start cmd /k tracert -w %timeout% %1
exit
Замена среды нового интерпретатора команд не может быть для всех, но, невооруженным глазом, взглядами и работает хорошо на меня.