Batch file 有没有在批处理文件中写入Ctrl-C的方法? 是否有一种方法可以在批处理文件中使用ctrl-c,而无需用户输入ctrl-c?

Batch file 有没有在批处理文件中写入Ctrl-C的方法? 是否有一种方法可以在批处理文件中使用ctrl-c,而无需用户输入ctrl-c?,batch-file,cmd,Batch File,Cmd,在批处理文件和命令提示符中,输入ctrl-c将中断类似for循环或批处理作业的命令。我在胡闹,想看看实际的break命令是否有用(它真的没有用处,即使命令扩展名在上面也是无用的),我想“有没有办法在批处理文件或命令行中写入ctrl-c?”我尝试的第一件事是使用for/l和if语句在do部分为if%a LEQ 9500(^^C)as^C为^C创建一个for循环,并说if%a LEQ 9500(^^C)是在输入ctrl-C以破坏某个东西时的显示方式。当我在(10000,-1,1)do(如果%a LE


在批处理文件和命令提示符中,输入
ctrl-c
将中断类似
for
循环或批处理作业的命令。我在胡闹,想看看实际的
break
命令是否有用(它真的没有用处,即使命令扩展名在上面也是无用的),我想“有没有办法在批处理文件或命令行中写入ctrl-c?”我尝试的第一件事是使用
for/l
if
语句在
do
部分为
if%a LEQ 9500(^^C)
as
^C
^C
创建一个
for
循环,并说
if%a LEQ 9500(^^C)
是在输入
ctrl-C
以破坏某个东西时的显示方式。当我在(10000,-1,1)do(如果%a LEQ 9500(^^C))中运行/l%a的完整命令(
)时,出现了错误
“^C”未被识别为内部或外部命令、可操作程序或批处理文件。
%a
低于9500时。我还用
%%a
在批处理文件中尝试了同样的方法,但出现了相同的错误。然后,我尝试使用
break
以及打开和关闭扩展,但仍然不起作用。

我想学什么 因此,总的来说,我想找出与
ctrl-c
等效的命令,以及如何使用它。

检查这个

下面是退出函数,它使用
-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
:ExitBatch-干净地退出批处理,无论调用多少次
如果不存在“%temp%\ExitBatchYes.txt”,则调用:buildYes
电话:CtrlC nul 2>&1
:CtrlC
cmd/c出口-1073741510
:buildYes-为操作系统使用的语言建立Yes文件
pushd“%temp%”
设置“是=”
复制nul ExitBatchYes.txt>nul
对于/f“delims=(/tokens=2”%%Y in(
“'copy/-y nul ExitBatchYes.txt该方法依赖于语言,这就是为什么@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

我是否在你的问题措辞中遗漏了什么,但最终结果是否不仅仅是
“当满足某个条件时,循环是否会被打破?"
在这种情况下,您所需要的只是一个条件测试,然后是
Goto:Label
,或者,如果子例程
Exit/B中存在循环,则我知道如何执行该操作,但我更希望能够编写
ctrl-c
,这样可以按预期工作,但它不是模拟
ctrl-c
,它只是exi在批处理文件中键入退出代码
-1073741510
。当我在for循环中调用您的函数时,它不会中断循环,而是退出脚本。当我在没有循环运行的情况下输入
ctrl-c
时,它还带来了
终止批处理作业的选项?[Y/N]
但使用您的函数时,它只是退出文件,没有类似于
选择
@NekoMusume的用户输入选项,然后只使用
:CtrlC
函数-它应该可以选择要求您退出。