在 D:/test 資料夾下有幾個檔案,想要更改檔名
檔案總管
全選 → 滑鼠右鍵 → 重新命名
系統會自動為同樣名稱的檔案加上編號
@Echo Off&;SetLocal ENABLEDELAYEDEXPANSION
FOR %%a in (*) do (
set "name=%%a"
set "name=!name: (=!"
set "name=!name:)=!"
ren "%%a" "!name!"
)
將以上程式存為 .bat,放入資料夾中並執行
就可以去除括號
命令提示字元 CMD
使用 RENAME 指令 ren old_name new_name
ren * b?.log
PowerShell
使用 PowerShell 就可以有近似程式語言的字串處理功能
# 原始字串
$_.Name
$_.BaseName
# 副檔名
$_.Extension
# 字串長度
$_.Name.Length
# 字串拼接
"abc" + $_.Name
# 擷取字串,自4至末尾
$_.Name.Substring(4)
# 擷取字串,自0至4
$_.Name.Substring(0,4)
# 分隔成陣列
-Split("_")
# 分隔後的陣列順序調整
($_.BaseName -Split("_"))[1,0]
# 陣列拼接
-Join("_")
# 取代
-replace "old", "new"
($_.BaseName -Split("_"))[1,0] -Join("-")
# 取代字串
Dir | Rename-Item -NewName { $_.name -replace "old", "new" }
# 擷取字串
Dir | Rename-Item -NewName { $_.Name.Substring(0,4) + $_.Extension }
# 自動編號
Dir *.jpg | %{ Rename-Item $_ -NewName ("new-name-{0}.jpg" -f $c++) }
# 起始編號
$c=123; Dir *.jpg | %{ Rename-Item $_ -NewName ("new-name-{0}.jpg" -f $c++) }
# 自動編號,補0
Dir *.jpg | %{ Rename-Item $_ -NewName ("new-name-{0:000}.jpg" -f $c++) }
# 改副檔名
Dir *.jpg | Rename-Item -NewName { [io.path]::ChangeExtension($_.name, "jpeg") }
找出所有檔名包含某字串的檔案,並替換成新字串
Get-ChildItem *.jpg -Filter "*old*" | ForEach {
Rename-Item $_ -NewName $_.Name.Replace("old", "new")
}
找出所有副檔名為 .log 的檔案,並將副檔名改為 .jpg
Get-ChildItem *.log | Rename-Item -NewName {
[System.IO.Path]::ChangeExtension($_.Name, ".jpg")
}
找出所有副檔名為 .jpg 的檔案,並重新命名為 image_編號.jpg
Get-ChildItem *.jpg | ForEach-Object -Begin {
$count = 1
} -Process {
Rename-Item $_ -NewName "image_$count.jpg"
$count++
}
軟體工具
一般叫做 renamer,市面上有很多選擇
功能大同小異,都很輕量,可依自己喜好選擇
- Advanced Renamer
- Ant Renamer
- Flexible Renamer
- KenRename