BATCH脚本:无法在嵌套循环中获取文件的修改日期

时间:2017-06-14 04:47:29

标签: date batch-file

我无法在嵌套循环中为我的文件修改日期。

我正在运行这个批处理脚本:

@ECHO OFF
SETLOCAL EnableDelayedExpansion
net use S: \\devfs\edcsrc\epoletto\campusanyware

SET CLIENTS= DEMO

FOR %%a in (%CLIENTS%) DO (

    S:
    CD AD
    FOR %%B in (*.cbl) DO (
        set file=%%B
        echo !file!
        for %%c in (!file!) do (echo %%~ta))

)
pause
net use S: /delete /Y
ECHO.

这是我的输出:

The command completed successfully.

ad1.cbl
ECHO is off.
ad2.cbl
ECHO is off.
ad3.cbl
ECHO is off.
Press any key to continue . . .

我的所有文件名都是正确的,但是当脚本进入第三个FOR循环时(对于%!c in(!file!)do(echo %%〜ta))),我无法获取日期/为我的文件修改时间。

作为概念验证,我从目录中的命令行尝试了相同的逻辑:

for %B in (*.cbl) DO (for %a in (%B) do echo %~ta)

我的命令输出是(包括初始命令):

V:\>for %B in (*.cbl) DO (for %a in (%B) do echo %~ta)

V:\>(for %a in (ad1.cbl) do echo %~ta )

V:\>echo 05/02/2017 11:32 AM
05/02/2017 11:32 AM

V:\>(for %a in (ad2.cbl) do echo %~ta )

V:\>echo 04/18/2017 02:04 PM
04/18/2017 02:04 PM

V:\>(for %a in (ad3.cbl) do echo %~ta )

V:\>echo 04/27/2017 11:46 AM
04/27/2017 11:46 AM

我很困惑为什么我无法从我的脚本中获取这些日期。我的最终目标是检查每个文件的日期,然后根据该日期执行另一个命令。现在我只想验证我可以使用echo获取日期。任何建议都表示赞赏!

谢谢!

1 个答案:

答案 0 :(得分:0)

而不是

        for %%c in (!file!) do (echo %%~ta))

使用

        for %%c in (!file!) do (echo %%~tc))

因为您希望修改时间为%%c,而不是%%a

:)