Datetime 带时间戳的循环批处理

Datetime 带时间戳的循环批处理,datetime,for-loop,batch-processing,batch-rename,Datetime,For Loop,Batch Processing,Batch Rename,我需要在一个循环中重命名多个文件,并包含一个时间戳。。。我的工作首先是更新每个文件的时间戳,使文件具有唯一的名称 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_

我需要在一个循环中重命名多个文件,并包含一个时间戳。。。我的工作首先是更新每个文件的时间戳,使文件具有唯一的名称

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)

谢谢

在循环中,变量不会更新。为了避免这种情况,添加了
setlocalenabledelayedexpansion
脚本


基本上,如果你想让它们更新,你需要用感叹号(!)代替百分号(%)。

谢谢你的反馈。我理解你的推荐!超过%。不幸的是,我似乎仍然无法做到这一点。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)@Dave时间是一个变量,对吧?因此,为了使变量在for循环中得到更新,必须用感叹号将其括起来。。。对于/f%%a in('dir/b TCA_*')do(设置时间=!time:~-11,2!!time:~-8,2!!time:~-5,2!!time:~2,2!ren%%a!date!TCA_!time!。txt)只是一个旁注,我还没有测试过这个,这纯粹是一个假设(很抱歉)。