2013-02-08 61 views
1

我需要重命名循环中的多个文件并包含一个时间戳......我的挣扎从更新每个文件的时间戳开始,因此文件具有唯一的名称。带有时间戳的批处理循环

setlocal enabledelayedexpansion 
SET date=%date:~-4,4%%date:~-10,2%%date:~-7,2% 
for /f %%a in ('dir /b TCA_*') do (SET 
time=%time:~-11,2%%time:~-8,2%%time:~-5,2%%time:~-2,2% 
ren %%a %date%TCA_%time%.txt) 

感谢

回答

4

虽然在一个循环中,变量不更新。为了环绕此,添加了setlocal enabledelayedexpansion脚本。

基本上,如果你想让它们更新,你需要用惊叹号(!)而不是百分号(%)包住它们。

+0

感谢您的反馈意见。我明白你的建议!超过%。 不幸的是我仍然无法完成这项工作。设置日期=%日期:〜-4,4 %%日期:〜-10,2 %%日期:〜-7,2% for/f %% a in('dir/b TCA_ * setlocal enabledelayedexpansion ')do ( SET time =%time:〜-11,2 %% time:〜-8,2 %% time:〜-5,2 %% time:〜-2,2% ren %% a %date%TCA_!time!.txt ) – elit3x 2013-02-11 17:25:00

+0

@Dave那么,时间是一个变量,对吧?因此,为了使变量在for循环中得到更新,必须将其包含在感叹号中... for('dir/b TCA_ *')中的/ f %% a( set time =!time :〜-11,2 !! time:〜-8,2 !! time:〜-5,2 !! time:〜2,2! ren %% a!date!TCA_!time!.txt ) 只是一个侧面说明,我没有测试过,这纯粹是一个假设(对此感到抱歉)。 – 2013-02-12 05:40:18