Windows 错误代码为0,但Jenkins作业失败
我总是觉得詹金斯失败: 生成步骤“执行Windows批处理命令”将生成标记为失败 但当我输入batch命令:echo退出代码是%errorlevel%时,我得到了0个代码 我的批处理命令是:Windows 错误代码为0,但Jenkins作业失败,windows,batch-file,jenkins,cmd,Windows,Batch File,Jenkins,Cmd,我总是觉得詹金斯失败: 生成步骤“执行Windows批处理命令”将生成标记为失败 但当我输入batch命令:echo退出代码是%errorlevel%时,我得到了0个代码 我的批处理命令是: ELSE ( ROBOCOPY.EXE C:\dir2\ C:\dir1\ script.bat /IS cd C:\dir1\ echo Exit Code is %errorlevel% C:\dir1\script.bat echo Exit Code is %error
ELSE (
ROBOCOPY.EXE C:\dir2\ C:\dir1\ script.bat /IS
cd C:\dir1\
echo Exit Code is %errorlevel%
C:\dir1\script.bat
echo Exit Code is %errorlevel%
ROBOCOPY.EXE C:\dir1 C:\dir3 /E /IS /XF *.config
echo Exit Code is %errorlevel%
)
echo TEST
命令回显测试从不显示。当我从批处理C:\dir1\script.bat中删除时,一切正常,jenkins的工作成功
脚本bat仅包含以下命令:
del.\bin\library.dll
你认为script.bat有什么问题?当我在脚本末尾添加:退出/B 0时,作业也失败了。您必须在此处为我们提供超过一半的语句,以获得最终答案。可能是在缺少else之前,它必须与else关键字位于同一行 更有可能的是,您是延迟扩展问题的4800万受害者。见无数这样的例子 在block语句(一系列带括号的语句)中,解析整个块,然后执行。块中的任何%var%都将在解析块时(在执行块之前)替换为该变量的值,这一点同样适用于FOR。。。不要挡 因此,如果遇到其他内容,则将在遇到IF时使用%variables%的值执行其他内容 克服这一问题的两种常用方法是1使用setlocal enabledelayedexpansion和use!瓦尔!代替%var%访问var的更改值,或2调用子例程使用更改的值执行进一步处理
因此,您看到的errorlevel值与解析假定的IF时存在的值相同—在执行之前。是的,我在else语句之前看到过。这没关系。我更改setlocal并添加“echo退出代码为!”!错误级别!”但它并没有显示出任何价值!错误级别!。我对詹金斯的失败仍有疑问。我真的不知道为什么它还在发生。请提供帮助。在执行if之前,您是否使用了setlocal enabledelayedexpansion指令?如果没有,则会显示回声!错误等级!正如你所报道的,是的,当然。我将指令放在if:setlocal enabledelayedexpansion之前,如果“%domain name%”==“xxx”。。。其他的