【问题标题】:Windows batch file losing track of variables immediately after settingWindows批处理文件在设置后立即失去对变量的跟踪
【发布时间】:2016-08-03 00:37:27
【问题描述】:

我一直在编写一个批处理脚本来检查文件。昨天早上我让它工作了,但由于某种原因,我设置的变量开始不起作用。代码如下:

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)打印出结果(我包含的调试没有给我任何新信息)

在 cmd.exe 中查看脚本结果时,FCMONTH/DAY/YEAR 都设置正确,但 echo 无法读取它们:

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

谢谢

【问题讨论】:

    标签: windows batch-file


    【解决方案1】:
    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      • 1970-01-01
      • 2015-02-07
      • 2011-04-17
      • 2012-07-07
      • 1970-01-01
      相关资源
      最近更新 更多