「The Kids Performances (2020).mp4」のようなファイル名を「Kids Performances, The (2020).mp4」に変更するバッチ コマンド

「The Kids Performances (2020).mp4」のようなファイル名を「Kids Performances, The (2020).mp4」に変更するバッチ コマンド

私の家族には、長年にわたり、主に および.aviファイルとして保存された、子供たちの学校や課外活動での演技の録画があります。私は、これらのファイルすべて (100 個以上あります) から、または という単語で始まるビデオのラベルを変更し、最後に移動するように.mp4依頼されました。TheA

たとえば、 というタイトルのビデオThe Kids Performances (2020).mp4は に変更されます。タイトルに と 'A' という単語を残しておきたい理由はまったくKids Performances, The (2020).mp4わかりませんが、そうするのです。The

私は Windows を使用しており、このサイトの掲示板でTheタイトルの先頭の を削除できる比較的簡単な方法を見つけましたが、常に (年) としてリストされる記録年の前に をタイトルの後ろに移動する方法を見つけることができません。

私が話しているのは次のことです:

for %%i in ("*.mp4") do (set fname=%%i) & call :rename
goto :eof
:rename
::Cuts off 1st four chars, then appends prefix
ren "%fname%" "%fname:~4%"
goto :eof

これは、タイトルの最初の 4 文字を一括で削除する処理を行いますが、年の前に最初の 4 文字をタイトルの末尾に移動するのに問題があります。家族にこれらの単語をタイトルからすべて削除するように懇願しましたが、説得できません。

この目標を達成する簡単な方法として、PC に Python もインストールしています。ご協力いただける方には、事前に感謝いたします。

答え1

パワーシェル簡単に拡張可能な記事リストと拡張機能リスト(-whatIfテスト用に保存し、後で変更を実行するために削除します。

$ArticleList = @( 'A' , 'The' )
$ExtList     = @( '*.avi' , '*.mp4' )
# From folder with files
# Remove "-WhatIf" to execute after testing
gci $ExtList | 
   ? { $_.BaseName -match ( '^({0})\s(\.+)\s(\(\d+\))' -f ( $ArticleList -join '|' )) } | 
       ReName-Item -NewName { '{0}, {1} {3}{4}' -f $matches[2] , $matches[1] , $matches[3] , $_.Extension -WhatIf }

'^({0})\s(\.+)\s(\(\d+\))' -f ( $ArticleList -join '|' )

正規表現を作成する

'^(Article[0]|Article[1]{|...})\s(\.+)\s(\(\d+\))'

3 つの一致するグループ:

  • Article : ({0})
  • TitleTExt: \s(\.+)
  • (Year) : (\(\d+\))

新しい名前を構築するために使用されます。

答え2

Keith Miller が投稿したような自動化されたソリューションではありませんが、十分な cmd スクリプトを作成した経験があり、別のスクリプトを作成したくないと思っている私としては、Excel を使用します。

  1. コマンドプロンプトを開き、名前を変更するファイルがあるフォルダーに移動します。
  2. を使用してファイル名のリストをクリップボードにコピーし dir /b | clip(またはdir /b /s | clipファイルがサブディレクトリに保存されている場合は)、これを Excel に貼り付けます。
  3. 必要な数式を使用して、新しいファイル名を別の列に保存します。完全に自動的に実行できない場合は、必要に応じて結果を手動で調整できます。
  4. 新しいファイル名に満足したら、ファイルを 1 つずつ名前変更するための Excel 数式を作成します。この段階では、シートは次のようになります。
B
1 数式:
2 元のファイル名 プレフィックス 拡大 ファイル名の残り 新しいファイル名 指示
3 キッズパフォーマンス(2018).avi =IF(OR(UPPER(LEFT(A3;2))="A ";UPPER(LEFT(A3;4))="THE ");LEFT(A3;FIND(" ";A3)-1);"") =MID(A3;FIND("(";A3)+1;4) =右(A3;3) =MID(A3;IF(B3="";1;LEN(B3)+2);LEN(A3)-LEN(B3)-LEN(C3)-LEN(D3)-IF(B3="";4;5)) =E3&IF(B3="";"";", "&B3)&" ("&C3&")."&D3 ="ren """&A3&""" """&F3&""""
4 サム・キッズ・パフォーマンス (2019).mkv =IF(OR(UPPER(LEFT(A4;2))="A ";UPPER(LEFT(A4;4))="THE ");LEFT(A4;FIND(" ";A4)-1);"") =MID(A4;FIND("(";A4)+1;4) =右(A4;3) =MID(A4;IF(B4="";1;LEN(B4)+2);LEN(A4)-LEN(B4)-LEN(C4)-LEN(D4)-IF(B4="";4;5)) =E4&IF(B4="";"";", "&B4)&" ("&C4&")."&D4 ="ren """&A4&""" """&F4&""""
5 キッズパフォーマンス(2020).mp4 =IF(OR(UPPER(LEFT(A5;2))="A ";UPPER(LEFT(A5;4))="THE ");LEFT(A5;FIND(" ";A5)-1);"") =MID(A5;FIND("(";A5)+1;4) =右(A5;3) =MID(A5;IF(B5="";1;LEN(B5)+2);LEN(A5)-LEN(B5)-LEN(C5)-LEN(D5)-IF(B5="";4;5)) =E5&IF(B5="";"";", "&B5)&" ("&C5&")."&D5 ="ren """&A5&""" """&F5&""""
1 値:
2 元のファイル名 プレフィックス 拡大 ファイル名の残り 新しいファイル名 指示
3 キッズパフォーマンス(2018).avi 2018 アビ キッズパフォーマンス キッズパフォーマンス、A (2018).avi ren 「A Kids Performance (2018).avi」 「Kids Performance, A (2018).avi」
4 サム・キッズ・パフォーマンス (2019).mkv 2019 動画 子供たちのパフォーマンス サム・キッズ・パフォーマンス (2019).mkv ren 「Some Kids Performance (2019).mkv」 「Some Kids Performance (2019).mkv」
5 キッズパフォーマンス(2020).mp4 2020 mp4 キッズパフォーマンス キッズパフォーマンス(2020).mp4 ren 「キッズパフォーマンス (2020).mp4」「キッズパフォーマンス (2020).mp4」
  1. 計算されたコマンドを含むセル (上記の例では G3:G5) を選択し、コピーしてクリップボードに置き、コマンド プロンプト ウィンドウを右クリックするか (最後の行で Enter キーを押す必要がある場合があります)、クリップボードの内容を空の *.cmd または *.bat ファイルに貼り付け、名前を変更するファイルがあるフォルダーに保存して実行します。

関連情報