在循环中使用%time和%date时,批处理脚本中的相同时间戳

时间:2014-08-25 21:37:53

标签: batch-file scripting

    for /f %%i in ('dir /s /b "%FolderLocation%"') do (
    MOVE %%i "%processedFolder%Imported-%date:~4,2%-%date:~7,2%-date:~10,4%_@_%time:~1,1%h%time:~3,2%m%time:~6,2%s%"
PING 1.1.1.1 -n 1 -w 10000 >nul
    )

以上脚本始终生成相同的时间戳。基本上它是从给定文件夹将文件移动到新位置并将时间戳添加到新文件。但他们都以相同的时间戳结束。我有10秒的延迟,这应该使时间戳不同。怎么了?

1 个答案:

答案 0 :(得分:1)

在for循环中,使用%扩展变量将使用for循环开始之前的值。 EnableDelayedExpansion允许您使用!代替%,并且可以在for循环中使用:

@echo off
setlocal enabledelayedexpansion

    for /f %%i in ('dir /s /b "%FolderLocation%"') do (
MOVE %%i "!processedFolder!Imported-!date:~4,2!-!date:~7,2!-!date:~10,4!_@_!time:~1,1!h!time:~3,2!m!time:~6,2!s!"
PING 1.1.1.1 -n 1 -w 10000 >nul
)

这应该有用。