ctrl-c
在批处理文件中,用户无需输入 ctrl-c
?ctrl-c
将会打断一个命令,就像 for
循环或一般的批处理作业。我想看看实际的 break
命令有什么用处(真的没有,即使是命令扩展也没有用),我觉得"有没有办法将ctrl-c写入批处理文件或命令行中?" 我首先尝试的是做一个步骤 for
循环使用 for /l
附带 if
声明中 do
条文 if %a LEQ 9500 (^^C)
作为 ^C
当你输入ctrl-c
来破坏一些东西。当我运行完整的命令(for /l %a in (10000, -1, 1) do (if %a LEQ 9500 (^^C))
)它做了错误的 '^C' is not recognized as an internal or external command, operable program or batch file.
当 %a
到了9500以下。我也在批处理文件中尝试了同样的事情,用了 %%a
并出现同样的错误。然后我尝试使用 break
以及用分机开了又关,还是不行。所以总的来说,我想弄清楚这个命令的等价物。ctrl-c
以及如何使用它。
检查这个 纫
下面是退出功能,通过 dbenham 使用 -1073741510
作为退出代码,以模拟 ctrl-c
在一个.bat脚本中。
:ExitBatch - Cleanly exit batch processing, regardless how many CALLs
if not exist "%temp%\ExitBatchYes.txt" call :buildYes
call :CtrlC <"%temp%\ExitBatchYes.txt" 1>nul 2>&1
:CtrlC
cmd /c exit -1073741510
:buildYes - Establish a Yes file for the language used by the OS
pushd "%temp%"
set "yes="
copy nul ExitBatchYes.txt >nul
for /f "delims=(/ tokens=2" %%Y in (
'"copy /-y nul ExitBatchYes.txt <nul"'
) do if not defined yes set "yes=%%Y"
echo %yes%>ExitBatchYes.txt
popd
exit /b
在你的脚本末尾添加这个,你可以直接使用 call :ExitBatch
如果你想看提示信息,你可以拨打 :CtrlC
功能
该 STATUS_CONTROL_C_EXIT
方法是依赖于语言的,这就是为什么 @dbenham 包括
copy/-Y nul [ANY FILE THAT EXISTS]
其中输出
Rubbish](YesNoAll)?
在这种情况下,我们显然要 Yes
(或用任何机器运行的语言),所以...。delims=(/
是需要的。
这里有一个独立于语言的解决方案,如 Ctrl-C
它立即终止所有批处理。
@echo off
FOR /L %%I in () do call:break 1000
NEVER REACHED
:break RETURN_EXIT_CODE
cmd /c exit %1
call:halt >nul 2>&1
:halt - Infinite Recursion
call:halt