我有这个问题,我想重新定义一个for循环的每个迭代的variables。 我不明白为什么这不起作用。 我曾尝试使用enabledelayedexpansion
搞乱,但没有成功。
echo off for /f "tokens=1-7 delims=::/ " %%A in ("%DATE% %TIME%") do set capture_time=%%D-%%B-%%C_%%E%%F%%G for /l %%a in (1,1,3) do ( echo %capture_time% timeout 3 /nobreak for /f "tokens=1-7 delims=::/ " %%A in ("%DATE% %TIME%") do set capture_time=%%D-%%B-%%C_%%E%%F%%G )
我期望的输出将是这样的:
2015-08-27_132506.50 2015-08-27_132509.50 2015-08-27_132512.50
每次循环运行时, capture_time
都会更新。
用(
和)
定义并用%Variable Name%
引用的块中的每个环境变量已经由命令处理器在解析该块时扩展。 这可以通过在命令提示符窗口中运行一个批处理文件来看到,使用echo on
或@echo off
或使用rem
注释掉。
解决方案是使用延迟扩展,如下所示。
@echo off setlocal EnableDelayedExpansion for /f "tokens=1-7 delims=::/ " %%A in ("%DATE% %TIME%") do set "capture_time=%%D-%%B-%%C_%%E%%F%%G" for /l %%a in (1,1,3) do ( echo !capture_time! timeout 3 /nobreak for /f "tokens=1-7 delims=::/ " %%A in ("!DATE! !TIME!") do set "capture_time=%%D-%%B-%%C_%%E%%F%%G" ) endlocal
有关延迟扩展的更多详细信息,请打开命令提示符窗口,执行那里set /?
并仔细阅读所有帮助页面输出到命令提示符窗口。 延迟的扩展在一个例子的帮助中解释。
为什么总是使用set "variable=value"
而不是set variable=value
总是比较好的, 这里就是一个例子。