【发布时间】:2015-08-27 21:49:08
【问题描述】:
我有这个问题,我想在 for 循环的每次迭代中重新定义一个变量。我无法弄清楚为什么这不起作用。我试过搞乱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 都会更新。
【问题讨论】:
-
你掉进了delayed expansion的陷阱!变量 is 已设置,但它较早展开,因此您看不到更新后的值...例如,在 this code 中,存在完全相同的问题...
-
我应用了您第一个链接中的答案,但它仍然不起作用。是否因为我每次迭代都“从头开始”重新定义变量而有所不同?
-
延迟扩展也必须应用于
!DATE!和!TIME!... -
您愿意将此作为官方答案吗?
-
见@Mofi 的answer...
标签: windows batch-file for-loop