我想将变量输出到文本文件。我已经在我的代码中完成了这个,但我在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
)
如果有人能说明为什么第一次尝试没有工作而且确实如此,那么请通知此主题以便学习。谢谢!
答案 0 :(得分:2)
因为或早期扩张。在块启动时,您的变量将替换为其值 。在这个时候,它仍然是未定义的,因此是空的。如果你有回音,你可以在屏幕上看到这种情况。如果你启用延迟扩展,就像你在第二个例子中所做的那样,它只在它被使用的时候被扩展,所以它的工作方式就像你期望变量在“真正的”编程语言中工作一样。
答案 1 :(得分:0)
<强> EnableDelayedExpansion 强> 导致变量以简单的语言扩展,导致系统处理变量的值而不是变量名称本身