批处理作业,尽管回答不终止它

问题描述:

为什么批处理作业结束,即使我输入“N” ?:终止批处理作业,尽管回答不终止它

^CTerminate batch job (Y/N)? N 
PS C:\path\to\folder> 
+3

差不多不可能没有看到回答批处理文件并知道批处理文件是如何启动的。 – Squashman

+0

用于调试批处理文件的第一步...在'@ECHO OFF'前面添加'REM'。 –

+0

让我们例如以下批处理: '@ECHO OFF REM做某事 平-n 10 127.0.0.1> NUL ' 它会产生以下输出: 'C:\用户\用户\桌面>批次 ^ CTerminate批量作业(是/否)? N C:\ Users \ User \ Desktop>' 即使我键入'N',为什么批处理仍然终止? –

检查

@ECHO OFF 
REM DO SOMETHING 
ping -n 10 127.0.0.1 >nul 
echo:continued 
+0

不起作用。在运行时,我按Ctrl + C,但是当出现终止批处理作业(Y/N)?时选择“No”,批处理结束。它不应该继续吗? –

+0

@ThomasGassmann,如果在按下Ctrl + C后打印“继续”,则正常工作。 – eryksun

+1

控制台应用程序(包括cmd.exe)是控制台主机实例(Windows 7+中的conhost.exe)的客户端。当您按下Ctrl + C时,控制台会向连接到控制台的每个进程广播一个“CTRL_C_EVENT”。这是通过注入一个从已知的'CtrlRoutine'函数开始的线程来实现的。如果该进程启用了Ctrl + C,则“CtrlRoutine”将调用注册的控制处理函数链,直到处理该事件。默认处理程序只是调用'ExitProcess'。 ping.exe要么依赖于默认处理程序,要么有一个正常退出。 – eryksun