dos - 如何在出错时退出批处理程序?

标签 dos stderr

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

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

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

最佳答案

使用 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
 )

关于dos - 如何在出错时退出批处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3303575/

相关文章:

windows - 在批处理文件中,如何从文件路径获取文件名?

linux - 如何替换 "bash: $COMMAND: command not found"消息?

mysql - 如何将mysql日志重定向到容器内的/dev/stdout?

scripting - MS 批处理 : Check if drive is in use

assembly - 像这样的除法错误 - 溢出。要手动处理此错误,请更改中断向量表中 INT 0 的地址

linux - 在 Perl 中添加默认系统换行符

java - 从java代码设置本地dos变量

Bash - stderr 在 stdout 之前捕获

java - 如何处理外部程序中不同的标准输出行为?

windows - 为 stderr 更改 Windows 上的文本输出颜色