Windows批处理文件在设置后立即丢失对变量的跟踪

时间:2016-04-12 11:57:07

标签: windows batch-file

我一直在处理批处理脚本以检查提交的内容。我昨天早上工作了,但由于某种原因,我设置的变量开始变得不起作用。这是代码:

for /f %%a in ('dir /B/A:D') do (
    for /f "tokens=1-3 delims=/ " %%b in ("%%~ta") do (
        set FCMONTH=%%b
        set FCDAY=%%c
        set FCYEAR=%%d
        echo %FCMONTH%\%FCDAY%\%FCYEAR%
    )
)

行由行:

  1. 在工作目录中查找文件夹
  2. 将文件创建日期解析为前三个令牌,分配给%b,%c和%d
  3. (通过5)将变量分配给标记
  4. (实际上是6)打印出结果(包括调试我没有给我任何新信息)
  5. 在cmd.exe中查看脚本结果时,FCMONTH / DAY / YEAR都正确设置,但回显无法读取它们:

    results

    有没有人对我的问题有任何见解?我不明白为什么它不能突然工作。

    由于

1 个答案:

答案 0 :(得分:2)

setlocal enableDelayedExpansion
for /f %%a in ('dir /B/A:D') do (
    for /f "tokens=1-3 delims=/ " %%b in ("%%~ta") do (
        set FCMONTH=%%b
        set FCDAY=%%c
        set FCYEAR=%%d
        echo !FCMONTH!\!FCDAY!\!FCYEAR!
    )
)

Delayed expansion