gpt4 book ai didi

batch-file - 批处理文件中的条件语句

转载 作者:行者123 更新时间:2023-12-02 02:02:20 26 4
gpt4 key购买 nike

我编写了一个运行一系列命令的 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),它不会提示我选项:Do you want to Terminate the Batch operation?是/否

例如,批处理文件正在处理 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 的功能以某种方式被修改。

我该如何解决这个问题?

谢谢。

最佳答案

我试过了,它似乎按预期工作:

@echo off
if "x%1x" == "xb1x" (
echo yes it is
dir
...
) else (
echo no it is not
dir
...
)

(其中 ... 重复前一行 100 次,让您有时间按 Ctrl-C)。我确实得到了提示,即使中断发生在 if ... else 中。

所以我怀疑您正在运行的命令有些异常,if 行为是一个转移注意力的问题。特别是,正如您所说的他们正在启动程序,我希望 Ctrl-C 直接传递给正在运行的程序,而不是传递给启动它的批处理文件。

关于batch-file - 批处理文件中的条件语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16662943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com