这是我的代码:
IF "%LOGFILE%" NEQ "" (
CALL :DO_SOMETHING 2>&1> %LOGFILE%
) ELSE (
CALL :DO_SOMETHING
)
我面临的问题是IF / ELSE语句被视为一个大的语句,整个语句需要在语法上正确。因此,如果“%LOGFILE%”等于“”,则第一个CALL语句在语法上不正确(即使它在这种情况下永远不会被调用),使整个IF / ELSE语句在语法上不正确。
如何解决这个问题?
答案 0 :(得分:4)
IF "%LOGFILE%" NEQ "" (
SET logfile_redirection=2^>^&1^> %LOGFILE%
) ELSE (
SET logfile_redirection=
)
CALL :DO_SOMETHING %logfile_redirection%
答案 1 :(得分:0)
另一种方式:
SET logfile_redirection=2>&1> %LOGFILE%
IF "%LOGFILE%"=="" SET "logfile_redirection="
CALL :DO_SOMETHING %logfile_redirection%
不需要SET的引号,但确保没有尾随空格。