我已经编写了一个运行一系列命令的MS DOS批处理文件。
每个命令调用一个具有特定参数的程序。为了自动化这个过程,我把所有命令组合在一起。
批处理文件的结构如下所示:
@echo off
if %1 == "b1" (
command 1
command 2
command 3
....
) else (
command a
command b
command c
)
我会翻译以下内容:
我按如下所示进行调用:
test.bat b1
如果我把b1作为批处理的参数传入,它将会处理一系列的命令,比如命令1、命令2、命令3等等。
同样地,如果我想要执行else部分中提到的一系列命令,我需要传入另一个参数:
test.bat abc
由于传递给批处理文件的参数不等于b1,它将开始执行批处理文件的else部分。在这里,我传递的参数(在这种情况下为abc)是命令a、命令b、命令c等所需的参数。
所有这些都运行得很好。
然而,我面临的问题是,如果我想在中途终止批处理文件(通过按Ctrl + C),它不会提示我选择:是否要终止批处理操作?Y/N
例如,假设批处理文件正在处理else部分的一系列命令。当前,假设它正在执行命令a。如果我按Ctrl + C,那么它不会提示我取消操作,而是取消执行命令a并自动继续执行命令b。如果我再次按Ctrl + C,则取消命令b并继续执行命令c,依此类推。
另一方面,如果我按以下方式编写批处理文件:
@echo off
command a
command b
command c
我从命令行中调用它:
test.bat abc
现在,当我在执行批处理文件时按下 Ctrl + C 键,它像预期的那样提示我取消批操作。
看起来,在批处理文件中添加条件语句会以某种方式修改 Ctrl + C 的功能。
我该如何解决这个问题?
谢谢。
CMD /?
的帮助,看看是否可以更改Control C/Break的处理方式。使用start "" /b /w command1
可能会起作用。 - foxidrive