2014-02-05 40 views
0

首先,我知道Stackexchange上有很多批處理文件重命名問題,但是在這裏或網頁上搜索到的大量數據都沒有得到滿意的結果。另外,我知道這可以通過其他方式來完成,但我一直能夠按照我想要的方式獲得批處理文件(簡單任務,沒有任何過於複雜)。即使我確實找到了一個更簡單的解決方案(例如使用GUI輔助工具),但我仍然想知道這個問題的解決方案。使用多個子字符串重命名文件

我想重命名一堆圖像,我(經常)從我的手機導入。圖像的默認名稱模板是 IMG_YYYYMMDD_HHMMSS.jpg;例如:IMG_20121224_165222.jpg

因此,比方說,我有一個文件夾充滿了這些文件(以及其他人)。我要選擇的文件開始與IMG和文件重命名爲以下格式: YYYY-MM-DD HH.MM.SS.jpg

這似乎相當微不足道的我開始使用子,但我無法讓它工作。我使用延遲擴展的變量;我已將我正在使用的代碼添加到本帖末尾。

現在爲上面的示例文件(IMG_20121224_165222.jpg),而不是得到「2012-12-24 16.52.22.jpg」我得到了「2012-12-24 16.NAME:15,2NAME:~17, 2.jpg「(當我回復我使用的變量時,請參閱下面的代碼)。 正如你注意到的那樣,奇怪的行爲在第一段時間後開始(在時間字段中),所以我試着用日期中的連字符替換它,但仍然是不行;我現在收到「2012-12-24 16-NAME:15,2NAME:〜17,2.jpg」。

我完全不知所措,爲何會發生這種情況。如果條件得到滿足,只要子字符串在某個點之後不擴展。

任何和所有的幫助將不勝感激。謝謝!

這是我用於此任務的最新代碼(將名稱列表輸出到要檢查的txt文件)。

@ECHO OFF>NUL 

SETLOCAL ENABLEEXTENSIONS 
SETLOCAL ENABLEDELAYEDEXPANSION 

FOR %%A IN (*.*) DO (
    SET NAME=%%A 
    IF /I "!NAME:~0,3!"=="IMG" (
     ECHO !NAME:~4,4!-!NAME:~8,2!-!NAME:~10,2! !NAME:~13,2!-!NAME:15,2!-!NAME:~17,2!.jpg >> output.txt 
    ) 
) 

PAUSE 

對於那些有興趣,這是輸出文件的內容:

2012-12-24 16-NAME:15,2NAME:~17,2.jpg 
2012-12-25 17-NAME:15,2NAME:~17,2.jpg 
2012-12-25 17-NAME:15,2NAME:~17,2.jpg 
2012-12-25 19-NAME:15,2NAME:~17,2.jpg 
2012-12-25 21-NAME:15,2NAME:~17,2.jpg 
2012-12-25 21-NAME:15,2NAME:~17,2.jpg 
2012-12-25 21-NAME:15,2NAME:~17,2.jpg 
2012-12-27 18-NAME:15,2NAME:~17,2.jpg 
2012-12-27 22-NAME:15,2NAME:~17,2.jpg 
2012-12-27 22-NAME:15,2NAME:~17,2.jpg 
2012-12-28 00-NAME:15,2NAME:~17,2.jpg 
2012-12-28 00-NAME:15,2NAME:~17,2.jpg 
2012-12-28 02-NAME:15,2NAME:~17,2.jpg 
2012-12-28 03-NAME:15,2NAME:~17,2.jpg 
2012-12-28 03-NAME:15,2NAME:~17,2.jpg 
2012-12-30 08-NAME:15,2NAME:~17,2.jpg 
2012-12-30 08-NAME:15,2NAME:~17,2.jpg 
2012-12-30 08-NAME:15,2NAME:~17,2.jpg 
2012-12-30 08-NAME:15,2NAME:~17,2.jpg 
2012-12-30 08-NAME:15,2NAME:~17,2.jpg 
2012-12-31 03-NAME:15,2NAME:~17,2.jpg 
2012-12-31 03-NAME:15,2NAME:~17,2.jpg 
2012-12-31 03-NAME:15,2NAME:~17,2.jpg 
2012-12-31 03-NAME:15,2NAME:~17,2.jpg 
2012-12-31 21-NAME:15,2NAME:~17,2.jpg 
2012-12-31 21-NAME:15,2NAME:~17,2.jpg 
2012-12-31 21-NAME:15,2NAME:~17,2.jpg 
2012-12-31 21-NAME:15,2NAME:~17,2.jpg 
2012-12-31 21-NAME:15,2NAME:~17,2.jpg 
2013-01-01 14-NAME:15,2NAME:~17,2.jpg 
2013-06-10 09-NAME:15,2NAME:~17,2.jpg 
2013-06-10 10-NAME:15,2NAME:~17,2.jpg 
2013-06-10 10-NAME:15,2NAME:~17,2.jpg 
2013-06-10 10-NAME:15,2NAME:~17,2.jpg 
2013-06-10 10-NAME:15,2NAME:~17,2.jpg 
2013-06-10 10-NAME:15,2NAME:~17,2.jpg 
2013-06-10 10-NAME:15,2NAME:~17,2.jpg 
2013-06-10 10-NAME:15,2NAME:~17,2.jpg 
2013-06-10 10-NAME:15,2NAME:~17,2.jpg 
2013-06-10 11-NAME:15,2NAME:~17,2.jpg 
2013-06-10 17-NAME:15,2NAME:~17,2.jpg 
2013-06-12 17-NAME:15,2NAME:~17,2.jpg 
2013-06-12 17-NAME:15,2NAME:~17,2.jpg 
2013-06-12 17-NAME:15,2NAME:~17,2.jpg 
2013-06-12 17-NAME:15,2NAME:~17,2.jpg 
2013-06-12 17-NAME:15,2NAME:~17,2.jpg 
2013-06-12 17-NAME:15,2NAME:~17,2.jpg 
2013-06-12 17-NAME:15,2NAME:~17,2.jpg 
2013-06-12 17-NAME:15,2NAME:~17,2.jpg 
2013-06-12 17-NAME:15,2NAME:~17,2.jpg 
2013-06-12 17-NAME:15,2NAME:~17,2.jpg 
2013-06-12 17-NAME:15,2NAME:~17,2.jpg 

回答

0
ECHO !NAME:~4,4!-!NAME:~8,2!-!NAME:~10,2! !NAME:~13,2!-!NAME:15,2!-!NAME:~17,2!.jpg >> output.txt 
                  ! ~ missing 
+0

現在是時候去跳樓和尷尬死了。 現在我覺得很愚蠢。 謝謝!至少這不是一個概念問題。 E-HE-他。 –

相關問題