![如何使用CMD“Track ?.mp3”將檔案重新命名為“T00?.mp3”](https://rvso.com/image/1400500/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8CMD%E2%80%9CTrack%20%3F.mp3%E2%80%9D%E5%B0%87%E6%AA%94%E6%A1%88%E9%87%8D%E6%96%B0%E5%91%BD%E5%90%8D%E7%82%BA%E2%80%9CT00%3F.mp3%E2%80%9D.png)
我有多個這樣的 mp3 檔案:
Track [number of track].mp3
例如。Track 1.mp3
-Track 11.mp3
我想將它們重命名為:
T00[number of track]
例如。T001.mp3
-T011.mp3
我嘗試用以下命令重命名 1-9 曲目:
ren "Track ?.mp3" "T00 ?.mp3"
但我的檔名中有空格 ( T00 1.mp3
)
更新:我正在嘗試編寫程式碼來刪除空間,這是我的程式碼
@echo off
setlocal enabledelayedexpansion
for /r %%G in ("T00 ?.mp3") do (
pause
echo -----------------------In loop----------------------------
echo Working with "%%G"
pause
set str=%%G
echo str is = "%str%"
pause
set str=%str: =0% //replace " " with 0
echo 2str is = "%str%"
pause
ren "%%~G" "%str%"
)
我收到的訊息是:
-----------------------In loop----------------------------
working with "C:\test\T00 1.mp3"
str = ""
2str = ""
A duplicate file name exists, or the file
cannot be found.
.
.
.
我不知道我錯了,這是我第一次使用批次腳本
答案1
使用 PowerShell 與正規表示式替換和格式化字串
$strPath = "C:\my\folder\*.mp3"
Get-Childitem $strPath | ForEach-Object {
$onlyNumbers = $_.Basename -replace ".*\D+",""
$WithZeros = "{0:D3}" -f [int]$onlyNumbers
$fileName = "T$WithZeros.mp3"
Rename-Item $_ $fileName
}
關鍵部分是-replace "^\D+",""
從檔案名稱開頭搜尋所有非數字(但不帶副檔名)並將其刪除。其次,腳本根據需要附加任意數量的零"{0:D3}" -f
。休息是很容易的事。
Old name New name
Track 1.mp3 T001.mp3
Track 11.mp3 T011.mp3
Track 111.mp3 T111.mp3
編輯:修復了小的正規表示式錯誤。之前99 ballons 01.mp3
變成T9901.mp3
。
現在是01 » 001 » T001.mp3
答案2
如果你想使用 Linux 或 Mac OSX 來解決你的問題,你可以這樣做:
count=1
for i in $(ls -v); do
number=$(printf "%05d" $count)
((count++))
mv $i T00$number.mp3
done
我已經在之前使用此命令創建的 25 個文件上進行了測試
for ((i=1; i<=25; i++)); do touch "Track $i.mp3"; done
答案3
如果這有幫助的話,Total Commander(Windows)有很棒的多重重命名工具(選擇所需的文件,然後按 Ctrl+M)。