如何使用CMD“Track ?.mp3”將檔案重新命名為“T00?.mp3”

如何使用CMD“Track ?.mp3”將檔案重新命名為“T00?.mp3”

我有多個這樣的 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)。

相關內容