如何使用 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

编辑:修复了 RegEx 的小错误。之前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)。

相关内容