Windows 批次修改檔案名稱的方法 (Batch Rename Files)


  1. 說明
    1. 切換目錄與觀察資料夾結構
    2. 複製檔案路徑
    3. 編輯名稱調整規則
  2. 示範
    1. Sequence Number
    2. Guid
    3. Interpolation
  3. 相關連結

教學如何使 CMD 批次修改檔案名稱,並在修改上保有檔案的名稱設定彈性。同時過程中也會說明如何取得資料夾中所有檔案的名稱與路徑,如何產生連續的數字、隨機的 GUID 並儲存於 Clipboard 之中,最後則是如何將檔案從巢狀關係抽出集中到單一路徑 😎

logo

說明

切換目錄與觀察資料夾結構

cd c:\temp
tree /F

目前的資料夾結構

複製檔案路徑

複製後存入 clipboard 中,藉由這個方法也可以將資料夾下的路徑名稱複製到 Clipboard,在需要羅列資料夾檔案名稱的使用情境非常實用 😋

dir /b /s *.pdf | clip

緊急追加!嘗試使用 Powershell 搭配 Pipeline 完成所有的動作,不需要再另外使用 VSCode。但這個方法沒有辦法彈性的編輯彈性較受到限制,適合精簡或是做為伺服器批次腳本的使用情境

下列的方法是先找出資料中所有符合的檔案,並且複製到同樣的位置。

Set-Location C:Temp
Get-ChildItem *.pdf -r | % {$_.fullname} | Copy-Item -Destination C:\Temp\Dest

dir 為 Get-ChildItem 的 alias,下列的方法是先製造 copy script string 再交由 Invoke-Expression 解讀執行。

dir *.pdf -r 
  | % {'copy ' + $_.FullName + ' ' + (new-guid).guid + '.pdf'} 
  | Invoke-Expression

編輯名稱調整規則

使用 Visual Studio Code 或者方便的編輯工具。

Alt + Shift + I 在每行語法後面加入目標路徑與名稱,並在每行首加入 copy。

示範

示範將原本樹狀資料夾中的檔案複製到根目錄中,而因為有部分檔案名稱會重複,所以對目標檔案名稱做統一的命名,可以使用 powershell 來取得命名規律,例如流水號 1 到 9:

Sequence Number

1..9 | clip
# 1

Guid

或者 9 組 GUID

1..9 | % {(new-guid).Guid} | clip
# f6599d0b-6e3d-46a8-8b45-6e2221145d6e

Interpolation

要取回傳入的參數使用 $_

1..9 | % { "file_$_.pdf}" }
# file_1.pdf

以下以 Sequence Number 示範 😀

完成後的指令如下:

copy C:\Temp\document.pdf 1.pdf
copy C:\Temp\document2.pdf 2.pdf
copy C:\Temp\business\document.pdf 3.pdf
copy C:\Temp\business\document2.pdf 4.pdf
copy C:\Temp\business\account\document.pdf 5.pdf
copy C:\Temp\business\account\papers.pdf 6.pdf
copy C:\Temp\business\account\reports.pdf 7.pdf
copy C:\Temp\business\finance\document.pdf 8.pdf
copy C:\Temp\business\finance\attach\images.pdf 9.pdf

貼到 Command Line 執行就可以完成批次的檔案重新命名 😊

執行指令後的結果

相關連結

PowerShell 常用指令筆記