gpt4 book ai didi

java - 批处理文件错误级别问题

转载 作者:行者123 更新时间:2023-12-02 17:58:03 25 4
gpt4 key购买 nike

我在 Windows 7 Enterprise 上并从批处理文件中调用一个 jar,该文件根据条件返回 0、1 或 2,我已使用“System.exit”进行相同的操作,

以下是我的批处理脚本

@echo off

java -jar "test.jar" %*
set exitcode=%ERRORLEVEL%
echo here is 1st exit code %exitcode%
if %exitcode% == 2 (
VERIFY > nul
set exitcode=%ERRORLEVEL%
echo here is 2nd exit code after VERIFY %exitcode%
call test.exe %*
echo here is 2nd exit code %ERRORLEVEL%

if %ERRORLEVEL% == 0 (
cmd /c "exit /b 0"
call test1.exe -f
echo here is 3rd exit code %errorlevel%
)
)exit /b %errorlevel%

我在上面的代码中所做的是,调用一个 jar 并根据它返回的错误级别我调用另一个 exe,并再次根据该 exe 的错误级别我调用第三个 exe。问题是,我得到的 exitcode 是分配的第一个退出代码,即如果 test.jar 存在且为 2,即使在成功执行其他 exe 之后,错误级别也不会改变。第三个exe永远不会被执行。尝试了不同的调用方法

cmd exit /b 0

用于将错误级别重置为 0,但它不起作用。

最佳答案

您的问题是 cmd 在语句被解析时立即扩展环境变量,而不是在执行时。这种意义上的语句包括整个 if(包括 block )。您需要使用延迟扩展,因此请在批处理开始时粘贴以下内容:

setlocal enabledelayedexpansion

然后在条件语句中使用 !errorlevel! 而不是 %errorlevel%(exitcode 同样如此)。

关于java - 批处理文件错误级别问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11554324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com