如果您在此for /f
命令中有变量,则不会将其打印到文件中。
setlocal EnableDelayedExpansion
for /F %%i in ('dir /B') do (
set duration=asdf
echo %duration% > file.txt
)
file.txt
的内容:Echo is ON.
如果您将set duration=asdf
移出for /f
换行并将其放在setlocal
行下方,则说明其工作正确并将asdf
打印到file.txt
为什么呢?如何使用for
命令中的set变量执行此操作?
答案 0 :(得分:1)
这是由于delayed expansion导致变量在同一命令中停止 set 和 used 。
你在Echo is ON.
得到file.txt
,因为命令解释器正在读取echo
命令:
echo > file.txt
echo /?
键入不带参数的ECHO以显示当前回波设置。
最简单的解决方法是将%
替换为!
更新了脚本:
setlocal EnableDelayedExpansion
for /F %%i in ('dir /B') do (
set duration=asdf
echo !duration! > file.txt
)