2017-07-18 63 views
0

爲什麼批處理作業結束,即使我輸入「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',爲什麼批處理仍然終止? –

回答

1

檢查

@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