Windows 其實內建許多可以更改大量檔案名稱的方法,有時候熟悉這些小技巧可以節省您很多時間。
有時候我們會從網路上下載許多圖片與檔案,通常檔案的名稱也是亂七八糟的,為了讓檔案看起更整齊,我們通常會將同一系列的檔案重新依照自己的規則來命名,但是如果檔案數量很多時,要手動更改每個檔案的名稱也是很累的。
所幸在 Windows 中本身就有內建一些更改大量檔案名稱的功能,只是一般人不曉得如何使用,以下分別介紹以檔案總管、命列提示字元與 PowerShell 的改檔名方法。
檔案總管
檔案總管是一個最方便的工具,不需要學習任何指令即可使用,不過功能就比較陽春,以下是使用檔案總管更改多個檔案名稱的步驟。
Step 1
首先開啟檔案總管,找到要更改檔名的檔案。
Step 2
選取要更改檔名的檔案。
Step 3
在第一個檔案上按下右鍵,選擇「重新命名」。
Step 4
輸入新的檔名。
Step 5
輸入完之後,按下 Enter 鍵。
Step 6
這樣檔案總管就會將所有選取的檔案重新命名為指定的檔案名稱,並且依照原本的順序編號。
命令提示字元
在 Windows 的命令提示字元之中,我們可以使用 rename
或 ren
指令配合萬用字元(*
)來一次更改多的檔案的檔名。
Step 1
若要開啟命令提示字元重新命名檔案,可以按著 Shift 鍵,並在資料夾的空白處點選滑鼠右鍵,選擇「在此處開啟命令式窗」。
Step 2
使用 rename
或 ren
指令批次更改檔案名稱,最常見的使用方式就是更改副檔名:
ren *.html *.txt
Step 3
這樣就完成了。
PowerShell
Windows 的 PowerShell 的功能比命令提示字元還要強大,他可以使用管(pipe)的功能將多個指令結合起來使用,就像在 Linux shell 中一樣。
假設我沒有一些檔案,檔名中包含許多空白,以下示範將所有檔案名稱中的空白字元置換為減號(-
)。
Step 1
在主選單中找到 Windows PowerShell,並開啟它。
Step 2
切換至檔案所在目錄後,使用 Dir
指令將所有的檔案名稱列出來,然後交給 Rename-Item
指令進行更改檔名的動作。
Dir | Rename-Item -NewName { $_.name -replace " ", "-" }
Step 3
這樣就完成了。
以下補充一些比較複雜的 PowerShell 範例。
這一個是把所有的 jpg 圖檔重新命名為 image_編號.jpg
,而編號的起始數字可以自己設定:
# 把所有的 JPG 檔案重新命名為 image_編號.jpg Get-ChildItem *.jpg | ForEach-Object -Begin { $count = 1 } -Process { Rename-Item $_ -NewName "image_$count.jpg" $count++ }
這一段指令是將所有的 *.jpeg
檔案的副檔名改為 jpg
,讓副檔名規則統一:
# 將所有 *.jpeg 檔案的副檔名改為 jpg Get-ChildItem *.jpeg | Rename-Item -NewName { [System.IO.Path]::ChangeExtension($_.Name, ".jpg") }
這一段指令稿是從所有的 *.jpg
檔案中,找出含有 oldstring
字眼的檔案,然後把 oldstring
這個字眼全部改為 newstring
:
# 從所有的 *.jpg 檔案中,找出含有 oldstring 字眼的檔案, # 把 oldstring 改為 newstring Get-ChildItem *.jpg -Filter "*oldstring*" | ForEach { Rename-Item $_ -NewName $_.Name.Replace("oldstring","newstring") }
事實上 Windows 的 PowerShell 的功能不只這些,它提供了豐富的控制與自動化的系統管理能力,若您對於 PowerShell 有興趣,可以參考微軟官方的教學文件。
參考資料:HTG
VV
超簡單的,謝謝你了
雯
請問若是要改成
gtwang_1
gtwang_2
gtwang_3
Dir 指令該如何寫?
達達的馬蹄
u can use
Dir | Rename-Item -NewName { $_.name –replace ” “, “_” } 將”空白”用”_”取代
FYLIU
太棒了,非常謝謝您!
布丁布丁吃布丁
真是實用,謝謝您!
Peter
如果要從一些既有檔名中,更改/置換前面固定位元的編號,而且有指定開始值,比如說從004開始編,請問指令要怎麼下?
現有檔名:
001 abc.mp3
002 bbe.mp3
003 xsese.mp3
要加入改名的新的檔案:
xxx032asdf.mp3
xxx009adfadaw.mp3
xxx023dfaveae.mp3
xxx038adfadfefoiu.mp3
xxx102dfaaoie.mp3
…..
感謝
Mr.光
請問一下為何我無法使用Windows PowerShell修改?
由於一開始我用自己的檔名也顯示如此,
後來我就連自己資料夾名稱也改成上圖那個,
我是想把從新排序後所產生的括弧拿掉,
指令為:
PS C:\Users\wonderful907> RenameFiles> Dir | Rename-Item -NewName { $_.name -replace ” ()”, “” }
我都照著上圖的步驟了卻顯示錯誤:
無法辨識 ‘\RenameFiles>’ 詞彙是否為 Cmdlet、函數、指令檔或可執行程式的名稱。請檢查名稱拼字是否正確,如果包含路徑的話,請確認路徑是否正確,然後再試一次。
位於 行:1 字元:14
+ \RenameFiles> <<<:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
請問一下到底是哪邊出問題?
路徑跟拼字都正確阿...
ANGFEN
DEAR SIRS:
如何取代 ( 括號
Andrew
您好,
如果要改_前的編號要怎麽做?
例如我想把00000006_03535.bmp 改成000000008_03535.bmp
ss
今天剛好用到:
Get-ChildItem *.bmp | Rename-Item -NewName { $_.Name -replace ‘00000006_’,’000000008_’ }
哈請試試
讚美你的路人甲
非常棒~ 謝謝老大
TSUI
請問一下如前面file name不改動只在所有file後面增加-XAP.pdf, 可如何改動.
Chiaying
感謝您的教學。
高山
請問您
如何用PowerShell保留原有檔案名稱
在檔案前自動編碼