我正在尝试在变量中使用变量以及延迟扩展,但仍然没有运气。
SETLOCAL EnableDelayedExpansion
SET ERROR_COMMAND=exit /B ^!ERRORLEVEL^!
这是我的最后一次尝试。我想在批处理文件中的一个步骤崩溃时设置要调用的ERROR_COMMAND。该命令应该是:
IF ERRORLEVEL 1 !ERROR_COMMAND!
或
IF ERRORLEVEL 1 %ERROR_COMMAND%
问题是,我无法找到,如何正确设置ERROR_COMMAND变量,以便在分配时不评估ERRORLEVEL,而是在评估变量时
当然我可以在整个批处理文件中复制和粘贴代码,但使用变量看起来有点漂亮......
任何?
谢谢,米兰
答案 0 :(得分:1)
我确信有很多方法可以做到这一点,这里有两个:
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%和所有其他内置特殊变量相同)< / p>