Как подавить “Оконечное пакетное задание (Y/N)” подтверждение?

В cmd, когда мы нажимаем Ctrl+C, мы завершили целевое приложение, но если целевое приложение называют от пакетного файла, мы получаем это "Оконечное пакетное задание (Y/N)" подтверждение. Я никогда не могу помнить экземпляр, где я принял решение не завершить пакетное задание. Как мы можем пропустить это подтверждение?

158
задан 04.09.2009, 15:39

8 ответов

AFAIK Вы не можете как это поведение, дизайном и управляется интерпретатором команд. Нет никакого метода "отображения" или даже "прерывания" этого, если Вы не декомпилируете и перекомпилировали интерпретатор непосредственно.

54
ответ дан 07.12.2019, 07:44

Если Вы ничего не должны делать в пакетном файле после того, как Ваше приложение будет обычно заканчиваться, то использование 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.)

17
ответ дан 07.12.2019, 07:44

Нажмите Ctrl+C дважды.

59
ответ дан 07.12.2019, 07:44

Посмотрите этот вопрос о Переполнении стека.

Однако исправление cmd.exe не является чем-то, что я сделал бы для этого.

4
ответ дан 07.12.2019, 07:44

В моем случае это был файл ping.bat, который был правильным в моем пользовательском каталоге (C:\Users\ в Vista или C:\Documents and Settings\ в XP), который держал пакетное место неопределенно.

Этот пакетный файл выполнялся каждый раз, когда я выполнил ping от командной строки, где текущий каталог является моим пользовательским каталогом. Проверка с помощью ping-запросов из окна Run, или из каталога другого пользователя работала хорошо.

Удаленный файл из моего пользовательского dir и проблемы был разрешен!

0
ответ дан 07.12.2019, 07:44

Запустите работы, но теперь окно, открытое пакетным файлом, изменяется от опций, которые я имел, и "свойства" отключены (не ответит).

0
ответ дан 07.12.2019, 07:44

В конце Вашего сценария просто добавьте следующую команду:
echo
Это не "повредит" поведение Вашего сценария, и это, кажется, предотвращает CDM, чтобы спросить, хотите ли Вы к termininate пакет.

-3
ответ дан 07.12.2019, 07:44

Просто перенаправьте пакет stdin к пустому указателю путем добавления <nul в конец команды.

0
ответ дан 07.12.2019, 07:44

Я боролся с этим требованием избежать "Оконечного пакетного задания" подсказка на некоторое время.

Мое последнее прозрение является чем-то вроде ловкости рук (или консоль) путем замены одного экземпляра 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

Замена среды нового интерпретатора команд не может быть для всех, но, невооруженным глазом, взглядами и работает хорошо на меня.

13
ответ дан 07.12.2019, 07:44

Теги

Похожие вопросы