2013-02-08 57 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