Windows robocopy成功后导致退出(1)

Windows robocopy成功后导致退出(1),windows,batch-file,jenkins,cmd,robocopy,Windows,Batch File,Jenkins,Cmd,Robocopy,我试图在jenkins中调用此代码 rem copy installation to output folder set src="C:\code\EPMD\Installer\inno setup\Output" set dst="c:/test_installs/Calibration/%version_name%" call robocopy %src% %dst% /MIR /E /is /it 代码运行并工作,在目标文件夹中创建一个新文件 这使得robocopy返回1,如文档所述 然

我试图在jenkins中调用此代码

rem copy installation to output folder
set src="C:\code\EPMD\Installer\inno setup\Output"
set dst="c:/test_installs/Calibration/%version_name%"
call robocopy %src% %dst% /MIR /E /is /it
代码运行并工作,在目标文件夹中创建一个新文件

这使得robocopy返回1,如文档所述

然后,它在内部调用退出1,jenkins认为构建失败了

如何“捕获”该返回值而不使生成失败?

使用退出代码(或)指示复制操作的结果,其中小于
8的值并不意味着发生了错误;您可以将此
ErrorLevel
进行后期转换:

rem/*注意已更改的引号,因此引号不再成为变量值的一部分;
rem当您稍后引用这些值时,这在当前情况下不会有太大变化,
rem,但它将大大简化多变量值的潜在串联:*/
设置“src=C:\code\EPMD\Installer\inno setup\Output”
设置“dst=c:/test\u安装/校准/%version\u name%”
rem//现在值被引用;考虑到多余的“呼叫”已被删除:
机器人副本“%src%”“%dst%”/MIR/E/IS/IT
rem//这将正确处理“robocopy”返回的退出代码(`ErrorLevel`):
如果错误级别8(退出/B 1)否则(退出/B 0)

如果不想在
robocopy
之后立即退出批处理脚本,可以执行以下操作:

set“src=C:\code\EPMD\Installer\inno setup\Output”
设置“dst=c:/test\u安装/校准/%version\u name%”
机器人副本“%src%”“%dst%”/MIR/E/IS/IT
rem//在“robocopy”失败时终止脚本:
如果错误级别8退出/B 1
雷姆//当“机器人复制”成功时,我们降落在这里;
rem在这里做一些进一步的动作。。。
雷姆。。。
rem//最后明确强制执行零退出代码:
退出/b0

1。你为什么
打电话给
机器人复制
?2.您可以这样做:
如果ErrorLevel 8(exit/b1)else(exit/b0)
(意思是:如果
ErrorLevel
大于或等于
8
(表示实际错误),则以
ErrorLevel
1
退出脚本,否则以
ErrorLevel
ErrorLevel
退出脚本)…太好了,谢谢!如果你写这封信作为答复,我会接受的。2.因为xcopy会提示我src是文件还是文件夹,而robocopy不会。我只是想要最简单的带覆盖和无提示的递归文件夹副本aschipfl的意思是,当您可以运行
robocopy
时,无需调用robocopy
我们只调用
其他批处理文件或批处理标签。顺便说一句,最好使用
robocopy
,因为
xcopy
已被弃用,即使它仍然有效。哦。谢谢,删除了呼叫!!最好使用双引号设置
变量,包括实际变量名,而不仅仅是值<代码>设置“src=C:\code\EPMD\Installer\inno setup\Output”然后在用法
机器人复制“%src%”“%dst%”/MIR/E/is/it
else
成为字符串的一部分。”。。虽然对于路径不是什么大问题,但是对于其他变量可能会成为一个问题。我仍然想知道为什么robocopy调用会退出调用脚本?这有什么意义?我不想让它退出