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)。

関連情報