You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何从Shell任务检测Windows程序的errorlevel返回值?

关于检测Windows可执行文件返回值的解决方案

VS Code的shell任务本身默认就会检测命令的退出码(对应Windows的errorlevel):只要命令返回0,任务会自动标记为成功;返回非0值则标记为失败,不需要额外配置内置的problemMatcher来实现这个基础检测逻辑。

如果需要更精准地控制失败条件,或是针对特定errorlevel做自定义处理,可以参考以下两种方式:

方式一:自定义problemMatcher捕获指定退出码

虽然没有专门针对errorlevel的内置problemMatcher,但可以自定义一个简单的配置来捕获非0退出码:

{
    "label": "Some EXE",
    "type": "shell",
    "command": "FOO.exe",
    "args": [
        "bar"
    ],
    "problemMatcher": {
        "owner": "custom",
        "severity": "error",
        "background": false,
        "pattern": {
            "regexp": "^.*$"
        },
        "exitCode": {
            "notEquals": 0 // 捕获所有非0的errorlevel作为失败
        }
    }
}

如果只需要针对特定非0值标记失败,可将notEquals替换为equals并指定具体值:

"exitCode": {
    "equals": [1, 3, 5] // 仅当errorlevel为1、3、5时标记任务失败
}

方式二:在命令中显式检查errorlevel

也可以直接用Windows批处理语法在命令里判断errorlevel,同时保留原退出码:

{
    "label": "Some EXE",
    "type": "shell",
    "command": "FOO.exe bar && echo 执行成功 || (echo 执行失败,errorlevel为%errorlevel% && exit /b %errorlevel%)"
}

关键提示

  • 若你的可执行文件返回的非0errorlevel包含警告类场景(而非严格错误),才需要通过自定义problemMatcher来区分处理;常规的成功/失败判断依赖VS Code任务的默认退出码检测即可。

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

火山引擎 最新活动