You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Windows批处理脚本出错时终止执行?

Windows批处理脚本错误终止优化方案

要让你的批处理脚本在命令出错(如目录不存在、cmake执行失败)时立刻终止循环并停止运行,不需要在每个命令后手动添加冗长的IF ERRORLEVEL判断,可以通过以下简洁方式实现:

修改后的脚本示例

setlocal EnableDelayedExpansion
@echo OFF

:: 定义错误退出的快捷逻辑
set "EXIT_ON_ERROR=echo 命令执行失败,终止脚本... & exit /b !ERRORLEVEL!"

FOR %%a in (x86 x86_64 armeabi-v7a arm64-v8a) do (
    set MY_ANDROID_BUILD_ABI=%%a
    FOR %%m in (debug release) DO (
        set MY_MODE=%%m
        echo !MY_MODE! -> !MY_ANDROID_BUILD_ABI!
        :: 切换目录失败则终止
        cd "D:\dev\libs\QT6.4\android\!MY_MODE!\!MY_ANDROID_BUILD_ABI!" || !EXIT_ON_ERROR!
        :: 构建命令失败则终止
        cmake --build . --parallel || !EXIT_ON_ERROR!
        :: 安装命令失败则终止
        cmake --install . || !EXIT_ON_ERROR!
    )
)

核心优化说明

  • 利用批处理的||运算符:如果前面的命令执行返回非0错误码,就自动执行后面的退出逻辑,无需重复编写IF判断。
  • 提前定义EXIT_ON_ERROR变量,统一错误提示和退出行为,让脚本更简洁易维护。
  • 给路径添加双引号,避免路径包含空格时触发意外错误。
  • 结合延迟扩展(EnableDelayedExpansion),确保循环内的!ERRORLEVEL!能正确获取当前命令的错误码。

内容的提问来源于stack exchange,提问作者Alexey Starinsky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 14:50:29