Batch file 批处理错误级别工作不正常
所以我对批处理的错误级别有很多问题。这对我不起作用。 我有一个自己的ms build批处理脚本,无论我做什么,我总是从ERRORLEVEL返回0(例如msbuild、tf get、tf checkout、copy、xcopy等) 因此,我在这里发布了一个小示例:Batch file 批处理错误级别工作不正常,batch-file,msbuild,copy,errorlevel,Batch File,Msbuild,Copy,Errorlevel,所以我对批处理的错误级别有很多问题。这对我不起作用。 我有一个自己的ms build批处理脚本,无论我做什么,我总是从ERRORLEVEL返回0(例如msbuild、tf get、tf checkout、copy、xcopy等) 因此,我在这里发布了一个小示例: @echo off set Update=1 IF %Update% == 1 ( echo. set /p "=- Copy stuff..." <NUL xcopy /R /Y C:\test\2.li
@echo off
set Update=1
IF %Update% == 1 (
echo.
set /p "=- Copy stuff..." <NUL
xcopy /R /Y C:\test\2.lib C:\test1
if %ERRORLEVEL% neq 0 (echo FAILED!) ELSE (echo SUCCEED!)
echo -^> done
pause
)
@echo关闭
设置更新=1
如果%Update%==1(
回响
设置/p“=-复制内容…”完成
暂停
)
因此,当我这样做时,它总是返回successful并打印0:echo%ERRORLEVEL%
你能帮我吗?我真的想在这里使用您需要的errorlevel,或者使用:
@echo关闭
设置更新=1
如果%Update%==1(
回响
设置/p“=-复制内容…”完成
暂停
)
使用IF ERRORLEVEL 1
可以检查ERRORLEVEL是否为1或更大。您需要在此处或使用:
@echo关闭
设置更新=1
如果%Update%==1(
回响
设置/p“=-复制内容…”完成
暂停
)
使用
IF ERRORLEVEL 1
可以检查ERRORLEVEL是否为1或更大。正如Npcmaka所说,您有延迟扩展问题
另一种方法是放弃ERRORLEVEL,改用&&
和|
条件命令串联运算符
@echo关闭
设置更新=1
如果%Update%==1(
回响
设置/p“=-复制内容…”完成
暂停
)
显示多行使用的编辑
@echo关闭
设置更新=1
如果%Update%==1(
回响
设置/p“=-复制内容…”完成
暂停
)
正如Npcmaka所说,您遇到了延迟扩展问题
另一种方法是放弃ERRORLEVEL,改用&&
和|
条件命令串联运算符
@echo关闭
设置更新=1
如果%Update%==1(
回响
设置/p“=-复制内容…”完成
暂停
)
显示多行使用的编辑
@echo关闭
设置更新=1
如果%Update%==1(
回响
设置/p“=-复制内容…”完成
暂停
)
啊,太好了,它正在工作!!谢谢!!那么这就是检查所有errorlevels>=1?为了使它更具可读性,我想我会尝试:如果错误级别为0(echo成功!),否则(echo失败!),但不幸的是,这不起作用。你知道为什么吗?@Scorpion因为如果errorlevel0
将捕获大于0的errorlevels,其中包括1,2…太好了,它正在工作!!谢谢!!那么这就是检查所有errorlevels>=1?为了使它更具可读性,我想我会尝试:如果错误级别为0(echo成功!),否则(echo失败!),但不幸的是,这不起作用。你知道为什么吗?@Scorpion因为IF ERRORLEVEL 0
将捕获大于0的errorlevels,其中包括1,2…感谢您的选择!但由于我要检查的命令通常要长得多,因此我将在单独的一行中进行检查,以使其更具可读性:)@Scorpion-???行数与技术上的差异无关。你仍然可以用这种技巧使用多行。谢谢你的努力!对不起,我之前没有说得很恰当,但我的意思是,它(对我来说)不太容易阅读,而且我认为当同事们将要检查我的批次时,他们也不容易阅读。这就是我坚持使用npocmaka解决方案的原因。但你也得到了我的+1:)谢谢你的选择!但由于我要检查的命令通常要长得多,因此我将在单独的一行中进行检查,以使其更具可读性:)@Scorpion-???行数与技术上的差异无关。你仍然可以用这种技巧使用多行。谢谢你的努力!对不起,我之前没有说得很恰当,但我的意思是,它(对我来说)不太容易阅读,而且我认为当同事们将要检查我的批次时,他们也不容易阅读。这就是我坚持使用npocmaka解决方案的原因。但你也得到了我的+1:)
@echo off
set Update=1
IF %Update% == 1 (
echo.
set /p "=- Copy stuff..." <NUL
xcopy /R /Y C:\test\2.lib C:\test1
IF ERRORLEVEL 1 (echo FAILED!) ELSE (echo SUCCEED!)
echo -^> done
pause
)