批处理文件:输出变量到文本文件

时间:2014-08-24 14:07:04

标签: batch-file if-statement echo text-files

我想将变量输出到文本文件。我已经在我的代码中完成了这个,但我在if语句中有一个输出,我无法开始工作。

if not exist "%TuningLog%" (
    set Title=Tuning Parameters Saving Log
    set LogTitle=--------- %Title% ---------
    echo %LogTitle%>> "%TuningLog%"
)

它应该做的就是首先检查日志文件是否存在,如果它不存在,那么我想在第一个实例中附加一个标题。

但我在日志文件中得到的只是"回声已关闭。"如果我不使用变量并只在那里放置文本,那么它可以正常工作。

有人能发现问题吗?感谢阅读和任何帮助!

更新:

我将代码更改为。我不太了解延迟扩张,但我尝试了这个,它碰巧工作......

if not exist "%TuningLog%" (
    setlocal enabledelayedexpansion
    set Title=Tuning Parameters Saving Log
    set LogTitle=--------- !Title! ---------
    echo !LogTitle!>> "!TuningLog!"
    endlocal
)

如果有人能说明为什么第一次尝试没有工作而且确实如此,那么请通知此主题以便学习。谢谢!

2 个答案:

答案 0 :(得分:2)

因为或早期扩张。在块启动时,您的变量将替换为其值 。在这个时候,它仍然是未定义的,因此是空的。如果你有回音,你可以在屏幕上看到这种情况。如果你启用延迟扩展,就像你在第二个例子中所做的那样,它只在它被使用的时候被扩展,所以它的工作方式就像你期望变量在“真正的”编程语言中工作一样。

答案 1 :(得分:0)

<强> EnableDelayedExpansion 导致变量以简单的语言扩展,导致系统处理变量的值而不是变量名称本身