批量和延迟扩展中的变量变量

时间:2010-06-10 08:29:52

标签: batch-file

我正在尝试在变量中使用变量以及延迟扩展,但仍然没有运气。

SETLOCAL EnableDelayedExpansion
SET ERROR_COMMAND=exit /B ^!ERRORLEVEL^!

这是我的最后一次尝试。我想在批处理文件中的一个步骤崩溃时设置要调用的ERROR_COMMAND。该命令应该是:

IF ERRORLEVEL 1 !ERROR_COMMAND!

IF ERRORLEVEL 1 %ERROR_COMMAND%

问题是,我无法找到,如何正确设置ERROR_COMMAND变量,以便在分配时不评估ERRORLEVEL,而是在评估变量时

当然我可以在整个批处理文件中复制和粘贴代码,但使用变量看起来有点漂亮......

任何?

谢谢,米兰

1 个答案:

答案 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>