if / else将输出重定向到批处理文件中的空变量

时间:2013-12-10 18:50:09

标签: windows redirect batch-file if-statement string

这是我的代码:

IF "%LOGFILE%" NEQ "" (
    CALL :DO_SOMETHING 2>&1> %LOGFILE%
) ELSE (
    CALL :DO_SOMETHING
)

我面临的问题是IF / ELSE语句被视为一个大的语句,整个语句需要在语法上正确。因此,如果“%LOGFILE%”等于“”,则第一个CALL语句在语法上不正确(即使它在这种情况下永远不会被调用),使整个IF / ELSE语句在语法上不正确。

如何解决这个问题?

2 个答案:

答案 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的引号,但确保没有尾随空格。