2014-12-05 225 views
0

我有近2000個文件,我需要重命名。重命名多個文件

文件被命名爲按以下格式:PART1#PART2#PART3.pdf

我想批量重命名文件,以便PART2之前PART1例如移動PART2#PART1#PART3.pdf

PART 1 = A random document reference e.g. 124244 
PART 2 = A reference number e.g. 12-12434-A 
PART 3 = A short description e.g. Part 1 

#符號將每個部分分開。

是否有一個簡單的實用程序,我可以用來做出這種改變?

回答

0

使用批處理文件

@echo off 
    setlocal enableextensions disabledelayedexpansion 

    cd /d "c:\where\thefiles\are" 

    for /f "tokens=1,2,* delims=#" %%a in (' 
     dir /b /a-d *.pdf ^| findstr /r /b /e /i /c:"[^#][^#-]*#[^#][^#]*#..*\.pdf" 
    ') do echo ren "%%a#%%b#%%c" "%%b#%%a#%%c" 

這段代碼的作用是

  1. 獲取文件清單:dir命令要求.pdf沒有文件夾的裸文件格式的文件

  2. 僅用於獲取正確文件的過濾器:findstr命令,用於搜索與行的開頭和結尾匹配的正則表達式,忽略大小寫。針對文件名進行測試的表達式爲:非#字符,後跟非#-字符的序列(以避免將文件重命名兩次),接着是#,後跟非#和非序列非#字符,接着是#和字符在.pdf

  3. for命令結束的任何序列分割使用#作爲令牌定界符的名稱和爲每一個執行重命名。

重命名操作僅迴應到控制檯。如果輸出正確,請刪除echo命令

+0

請你給我進一步的細節,瞭解如何使用這種方法。我已將上面的代碼保存爲convert.bat,並將目錄路徑更改爲文件夾的正確位置。當我運行腳本時,似乎沒有任何事情發生,並且文件未被重命名。 – user3220812 2014-12-05 14:11:09

+0

@ user3220812,如答案中所示,文件不會重命名。重命名操作將顯示在控制檯中。 '回聲'需要被刪除。如果您沒有看到輸出到控制檯,那麼您的文件不會遵循問題中指定的命名,即:數字序列#,一系列字符,#,另一個字符序列以及.pdf擴展名。它是否正確? – 2014-12-05 14:15:02

+0

@NC ND - 這是其中一個文件名的示例:3326646#95-00770-REM#NULL.pdf。我已經刪除了回聲但重命名不會發生。我懷疑這可能與文件名中的破折號有關(對不起,我之前沒有提到過)。 – user3220812 2014-12-05 14:36:01

-1

您可以一次重命名多個文件,只需選擇所有文件,然後單擊鍵盤上的F2按鈕並僅給出文件名稱「PART」,所有文件將自動更名。像本部分(1),部分(2)部分,(3)等

+0

對於每個文件,第1部分,第2部分和第3部分都不同,並且文件名內的數據需要保留,因此此方法無效。儘管感謝您的建議。 – user3220812 2014-12-05 14:07:55