Meine Familie hat über die Jahre hinweg Aufnahmen der Schulauftritte und außerschulischen Aktivitäten der Kinder als primäre .avi
und -Dateien gespeichert. Ich wurde gebeten, alle diese Dateien (es sind weit über hundert) zu nehmen und jedes Video, das mit dem Wort „oder“ .mp4
beginnt, neu zu benennen und ans Ende zu verschieben.The
A
Beispielsweise The Kids Performances (2020).mp4
wü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).mp4
behalten 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 The
am 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-whatIf
zum 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:
- Öffnen Sie die Eingabeaufforderung und navigieren Sie zu dem Ordner mit den umzubenennenden Dateien.
- Kopieren Sie die Liste der Dateinamen mit in die Zwischenablage
dir /b | clip
(oderdir /b /s | clip
wenn die Dateien in Unterverzeichnissen gespeichert sind) und fügen Sie diese in Excel ein. - 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.
- 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“ |
- 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.