【问题标题】:How to exit a batch program upon error?出错时如何退出批处理程序?
【发布时间】:2010-07-21 20:33:09
【问题描述】:

我有一个批处理文件,它可以做几件事。如果其中一个失败,我想退出整个程序。例如:

@echo off
type foo.txt 2>> error.txt >> success.txt
mkdir bob

如果找不到文件 foo.txt,那么我希望将 stderr 消息附加到 error.txt 文件,否则将 foo.txt 的内容附加到 success.txt。基本上,如果 type 命令返回一个标准错误,那么我希望批处理文件退出而不是创建一个新目录。如何判断是否发生错误并决定是否需要继续执行下一个命令?

【问题讨论】:

  • 我在 mkdir bob 命令之前添加了代码 IF NOT ERRORLEVEL 0 EXIT /B echo %errorlevel%,但无论 ERRORLEVEL 的值(即 0 或 1)如何,目录仍会被创建。所以基本上,无论 type 命令是否找到文件,ERRORLEVEL 都被设置为不同的值,但程序没有退出。想法?

标签: dos stderr


【解决方案1】:

使用ERRORLEVEL查看上一条命令的退出码:

 if ERRORLEVEL 1 exit /b

编辑:文档说“如果最后一个命令的退出代码等于或大于 X,则条件为真”(您可以使用 if /? 进行检查)。除此之外,您还可以使用

检查文件是否存在
 if exist foo.txt echo yada yada

条件为真时执行多条命令:

 if ERRORLEVEL 1 ( echo error in previous command & exit /b )

或

 if ERRORLEVEL 1 (
    echo error in previous command
    exit /b
 )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多