Batch-Befehl zum Umbenennen von Dateinamen wie „The Kids Performances (2020).mp4“ in „Kids Performances, The (2020).mp4“

Batch-Befehl zum Umbenennen von Dateinamen wie „The Kids Performances (2020).mp4“ in „Kids Performances, The (2020).mp4“

Meine Familie hat über die Jahre hinweg Aufnahmen der Schulauftritte und außerschulischen Aktivitäten der Kinder als primäre .aviund -Dateien gespeichert. Ich wurde gebeten, alle diese Dateien (es sind weit über hundert) zu nehmen und jedes Video, das mit dem Wort „oder“ .mp4beginnt, neu zu benennen und ans Ende zu verschieben.TheA

Beispielsweise The Kids Performances (2020).mp4würde der Titel eines Videos in geändert . Ich habe keine Ahnung, warum sie die Wörter und „A“ überhaupt in den Titeln Kids Performances, The (2020).mp4behalten wollen , aber sie wollen es.The

Ich verwende Windows und habe in einem Forum dieser Site eine relativ einfache Methode gefunden, mit der ich das Theam Anfang der Titel entfernen kann. Ich kann jedoch keine Möglichkeit finden, es an das Ende des Titels vor das aufgezeichnete Jahr zu verschieben, das immer als (Jahr) aufgeführt ist.

Hier ist, wovon ich spreche:

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

Dadurch werden die ersten 4 Zeichen aus den Titeln in einem Stapelformat entfernt, aber ich habe Probleme, diese ersten 4 Zeichen vor dem Jahr an das Ende des Titels zu verschieben. Ich habe meine Familienmitglieder angefleht, diese Wörter einfach ganz aus dem Titel zu streichen, aber ich kann sie nicht überzeugen.

Ich habe Python auch auf dem PC installiert, falls das eine einfachere Methode wäre, dieses Ziel zu erreichen. Vielen Dank im Voraus an alle, die helfen können!

Antwort1

Power Shellmit leicht erweiterbarer Artikelliste und Erweiterungsliste (Wir können-whatIfzum Testen und löschen Sie es später, um unsere Änderungen auszuführen.)

$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 '|' )

erstellt einen regulären Ausdruck

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

mit drei passenden Gruppen:

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

wird zum Erstellen des neuen Namens verwendet.

Antwort2

Keine automatisierte Lösung wie die von Keith Miller, aber als jemand, der genug cmd-Skripte geschrieben hat, um zu wissen, dass ich kein weiteres schreiben möchte, würde ich hierfür Excel verwenden:

  1. Öffnen Sie die Eingabeaufforderung und navigieren Sie zu dem Ordner mit den umzubenennenden Dateien.
  2. Kopieren Sie die Liste der Dateinamen mit in die Zwischenablage dir /b | clip(oder dir /b /s | clipwenn die Dateien in Unterverzeichnissen gespeichert sind) und fügen Sie diese in Excel ein.
  3. Speichern Sie die neuen Dateinamen in einer anderen Spalte mit den gewünschten Formeln. Wenn Sie dies nicht vollständig automatisch tun können, können Sie die Ergebnisse bei Bedarf immer noch manuell anpassen.
  4. Wenn Sie mit den neuen Dateinamen zufrieden sind, erstellen Sie eine Excel-Formel, um die Dateien nacheinander umzubenennen. Zu diesem Zeitpunkt könnte das Blatt ungefähr so ​​aussehen:
A B C D E F G
1 Formeln:
2 Ursprünglicher Dateiname Präfix Jahr Verlängerung Rest des Dateinamens Neuer Dateiname Befehl
3 Eine Kinderaufführung (2018).avi =WENN(ODER(OBER(LINKS(A3;2))="A ";OBER(LINKS(A3;4))="DAS ");LINKS(A3;FINDEN(" ";A3)-1);"") =MITTEL(A3;FINDEN("(";A3)+1;4) =RECHTS(A3;3) =MITTEL(A3;WENN(B3="";1;LÄNGE(B3)+2);LÄNGE(A3)-LÄNGE(B3)-LÄNGE(C3)-LÄNGE(D3)-WENN(B3="";4;5)) =E3&WENN(B3="";"";", "&B3)&" ("&C3&")."&D3 ="ren """&A3&""" """&F3&""""
4 Einige Kinderperformance (2019).mkv =WENN(ODER(OBER(LINKS(A4;2))="A ";OBER(LINKS(A4;4))="DAS ");LINKS(A4;FINDEN(" ";A4)-1);"") =MITTEL(A4;FINDEN("(";A4)+1;4) =RECHTS(A4;3) =MITTEL(A4;WENN(B4="";1;LÄNGE(B4)+2);LÄNGE(A4)-LÄNGE(B4)-LÄNGE(C4)-LÄNGE(D4)-WENN(B4="";4;5)) =E4&WENN(B4="";"";", "&B4)&" ("&C4&")."&D4 ="ren """&A4&""" """&F4&""""
5 Die Kinderaufführungen (2020).mp4 =WENN(ODER(OBER(LINKS(A5;2))="A ";OBER(LINKS(A5;4))="DAS ");LINKS(A5;FINDEN(" ";A5)-1);"") =MITTEL(A5;FINDEN("(";A5)+1;4) =RECHTS(A5;3) =MITTEL(A5;WENN(B5="";1;LÄNGE(B5)+2);LÄNGE(A5)-LÄNGE(B5)-LÄNGE(C5)-LÄNGE(D5)-WENN(B5="";4;5)) =E5&WENN(B5="";"";", "&B5)&" ("&C5&")."&D5 ="ren """&A5&""" """&F5&""""
1 Werte:
2 Ursprünglicher Dateiname Präfix Jahr Verlängerung Rest des Dateinamens Neuer Dateiname Befehl
3 Eine Kinderaufführung (2018).avi A 2018 avi Kindervorstellung Kinderaufführung, A (2018).avi ren „Eine Kinderaufführung (2018).avi“ „Kinderaufführung, Eine (2018).avi“
4 Einige Kinderperformance (2019).mkv 2019 mkv Einige Kinderaufführungen Einige Kinderperformance (2019).mkv ren „Some Kids Performance (2019).mkv“ „Some Kids Performance (2019).mkv“
5 Die Kinderaufführungen (2020).mp4 Der 2020 mp4 Kindervorstellungen Kinderaufführungen, Die (2020).mp4 ren „Die Kinderaufführungen (2020).mp4“ „Die Kinderaufführungen, Die (2020).mp4“
  1. Markieren Sie die Zellen mit den berechneten Befehlen (im obigen Beispiel G3:G5) und kopieren Sie sie, um sie in die Zwischenablage zu legen. Klicken Sie dann entweder mit der rechten Maustaste in das Eingabeaufforderungsfenster (möglicherweise müssen Sie in der letzten Zeile die Eingabetaste drücken) oder fügen Sie den Inhalt der Zwischenablage in eine leere *.cmd- oder *.bat-Datei ein, speichern Sie diese im Ordner mit den umzubenennenden Dateien und führen Sie sie aus.

verwandte Informationen