エピソードの名前を一括変更する方法

エピソードの名前を一括変更する方法

名前を変更したいエピソードが何千もあり、それらはすべて同様の形式になっています。

これを手動で行うと、非常に長い時間がかかります。

したがって、次の例の名前を一括変更する簡単な方法が必要になります。

[ソース]SeriesName_-_001_EpisodeName_[480p][DVD][アップローダー]

[出典]SeriesName_-_010_EpisodeName_[720p][BD][アップローダー]

[ソース]SeriesName_-_100_EpisodeName_[1080p][BD][アップローダー]

ただ:

シリーズ名 エピソード 1 - エピソード名

シリーズ名 エピソード 10 - エピソード名

シリーズ名 エピソード 100 - エピソード名

どうすればこれを達成できるでしょうか?

答え1

並べ替えの理由から、エピソード番号の長さは一定にしておきます。

拡張機能についてはどうでしょうか (私のワンライナーは拡張機能を保持します)?

コマンドラインで:

for %F in ([*) do @for /f "tokens=2-4 delims=-_[]" %A in ("%F") do @echo Ren "%~fF" "%A Episode %B - %C%~xF"

サンプル出力:

Ren "Q:\Test\2018\04\05\[Source]SeriesName_-_001_EpisodeName_[480p][DVD][Uploader]" "SeriesName Episode 001 - EpisodeName"
Ren "Q:\Test\2018\04\05\[Source]SeriesName_-_100_EpisodeName_[1080p][BD][Uploader]" "SeriesName Episode 100 - EpisodeName"
Ren "Q:\Test\2018\04\05\[Source]SeriesName_-_010_EpisodeName_[720p][BD][Uploader]" "SeriesName Episode 010 - EpisodeName"

バッチ ファイルでは、すべてのパーセント記号を 2 倍にします。

最初の for は、a で始まるすべての項目を反復します。2 番目の for[
は、指定されたすべての区切り文字で名前を分割します (隣接する区切り文字は 1 つとしてカウントされます)。分割には 2 番目から 4 番目の区切り文字のみが使用されます。ren コマンドは、セキュリティ上の理由からエコーのみで実行されます。出力に問題がない場合は、エコーを削除してください。

編集:このバッチ ファイル バージョンでは先頭のゼロが削除されます。

:: SU1310869.cmd
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
:: cd /d "X:\folder\episodefiles
for %%F in ([*) do @for /f "tokens=2-4 delims=-_[]" %%A in ("%%F") do (
  set /a Num=1%%B - 1000
  @echo Ren "%%~fF" "%%A Episode !Num! - %%C%%~xF"
)

関連情報