Batch IF语句一次只处理一个操作吗?

时间:2017-06-26 16:13:50

标签: batch-file if-statement counter

我是批处理脚本的新手,但借鉴了我对Bash的经验,试图理解事物。我是错误级别检查,如果%ERRORLEVEL%== 0,我希望它回显一条消息然后递增一个计数器变量,ELSE回显另一条消息并退出并退出代码。

我所做的事情的例子:

@echo off
SET counter=0

dir /a
SET RC=%ERRORLEVEL%
IF %RC% == 0 ECHO [INFO] - Command executed successfully. SET /A counter=counter+1 ELSE ECHO [ERROR] - Something went wrong here EXIT /B 99

上面的例子没有按照我的预期运作。 IF-ELSE语句在一行上,我得到的输出是

  

命令执行成功。 SET / A计数器=计数器+ 1

当我在()中包含echo和set命令时,它会抱怨

  

(此时设置意外

那么,我怎么能在TRUE上回复一条消息并将计数器递增1;并且在false时退出具有特定%ERRORLEVEL%代码的脚本?

2 个答案:

答案 0 :(得分:1)

我相信这就是你要找的东西。

@echo off
SET counter=0

dir /a
SET RC=%ERRORLEVEL%
IF %RC% == 0 (ECHO [INFO] - Command executed successfully. & (SET /A counter=counter+1)) ELSE (ECHO [ERROR] - Something went wrong here & (EXIT /B 99))

Counter,如果成功执行,则值为1。此外,使用dir /a需要/a之后的属性,例如/a:h隐藏文件。请dir /?获取更多属性。

答案 1 :(得分:0)

您可以处理将这些操作放在代码块()中的各种操作。

您可以使用条件&&||运算符:

dir /a && (
    echo success
    SET /A counter+=1
    ) || echo failed

或:

IF %RC%==0 (
   ECHO [INFO] - Command executed successfully. 
   SET /A counter=counter+1
   ) ELSE (
   ECHO [ERROR] - Something went wrong here 
   EXIT /B 9
)