ctrl-c
而不需要用户输入ctrl-c
?
ctrl-c
通常会中断诸如for
循环或批处理作业之类的命令。我到处乱逛一下,看看实际的break
命令是否有任何用处(即使命令扩展已无用,它也确实没有用),我想“ 是否可以编写ctrl- c是在批处理文件中还是在命令行上?“”我尝试做的第一件事是使用for
和for /l
语句中的if
循环进行do
步骤1}}部分将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.
低于9500时,发生了错误%a
。我还使用%%a
在批处理文件中尝试了同样的操作,并且有同样的错误。然后,我尝试使用break
以及扩展名和关闭名的扩展名,但仍然无法正常工作。
所以总的来说,我想弄清楚ctrl-c
的等效命令以及如何使用它。
答案 0 :(得分:3)
选中此thread
这是dbenham的退出函数,它使用-1073741510
作为退出代码来模拟.bat脚本中的ctrl-c
:
: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
函数
答案 1 :(得分:0)
STATUS_CONTROL_C_EXIT
方法取决于语言,这就是 @dbenham 包含
copy/-Y nul [ANY FILE THAT EXISTS]
输出
[垃圾](是/否/全部)?
在这种情况下,我们显然希望使用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