批量变量和延迟变量变量
问题描述:
我试图在变量中使用变量,但是仍然没有运气。批量变量和延迟变量变量
SETLOCAL EnableDelayedExpansion
SET ERROR_COMMAND=exit /B ^!ERRORLEVEL^!
这是我的最后一次尝试。我想设置一个ERROR_COMMAND以在批处理文件中的某个步骤崩溃时被调用。该命令应该是:
IF ERRORLEVEL 1 !ERROR_COMMAND!
或
IF ERRORLEVEL 1 %ERROR_COMMAND%
的事情是,我不能找出来,如何正确设置ERROR_COMMAND变量,从而使错误级别不以评估分配的时间,但在评估的变量
当然的时候,我可以复制&代码粘贴遍及批处理文件,但使用的变量似乎只是有点漂亮......
有人吗?
感谢,米兰
答
我敢肯定有很多方法可以做到这一点,这里有两个:
A)
SET ERROR_COMMAND=call echo.errlvl=%%ERRORLEVEL%%
verify failthis 2>nul
%ERROR_COMMAND%
B)
setlocal DISABLEDELAYEDEXPANSION&set "X=!"
call (endlocal&set "ERROR_COMMAND=echo.errlvl=%X%ERRORLEVEL%X%")&setlocal ENABLEDELAYEDEXPANSION
verify failthis 2>nul
%ERROR_COMMAND%
还应该注意的是,如果有人设置ERRORLEVEL = foo(在您的脚本或“全局”中),%ERRORLEVEL%将无法正确解析(同样适用于%CD%,其他所有内置特殊变量)
exit/B不符合您的想法它确实,foo.cmd && onlyDoThisOnSuccess.cmd不会工作 – Anders 2010-06-10 11:14:34