Mein Upstream-Host hat die Art und Weise geändert, wie Videodateien gesendet werden, und ich habe jetzt Dutzende von Ordnern, die sowohl eine MP4- als auch eine MKV-Version derselben Datei enthalten. Ich möchte die qualitativ hochwertigere MKV-Datei behalten und die MP4-Version löschen, aber es sind zu viele Dateien vorhanden, die von Hand bearbeitet werden können, und es ist wahrscheinlich, dass dies so lange wiederholt wird, bis ich das Problem behoben habe.
Daher möchte ich eine Skript- / Batch-Datei ausführen, die im Grunde rekursiv alle Unterverzeichnisse in dem Verzeichnis durchsucht, in dem ich sie ausgeführt habe if exist <filename>.mkv, delete <filename>.* unless <filename>.nfo
Die Dateien befinden sich auf einem NAS von Unraid, so dass ich Linux direkt auf der Box einspielen und verwenden kann, oder ich kann entweder einen Ubuntu- oder Windows-Computer verwenden, um dies über die Netzwerkfreigabe zu tun, also bin ich ziemlich flexibel, wo / wie das läuft.
Vielen Dank im Voraus für jede Unterstützung. Ich habe mir die Haare ausgerissen, habe gegoogelt, um zu sehen, ob ich die Lösung finde, aber leer herausgekommen bin.
quelle
Antworten:
Fügen Sie Folgendes in eine CMD-Datei (oder eine BAT-Datei) ein und führen Sie sie im Stammverzeichnis / Basisverzeichnis aus, von dem aus Sie nach doppelten Videodateien suchen und diese löschen möchten.
Das Skript löscht alle Dateien, die denselben Dateinamen wie eine MKV-Datei im selben Verzeichnis haben. Es werden jedoch keine .nfo-Dateien gelöscht.
Darüber hinaus wendet das Skript dieselbe Prozedur rekursiv auf alle Unterverzeichnisse an.
Beachten Sie die Verwendung von
setlocal
. Das Skript verwendet eine verzögerte Erweiterung der Umgebungsvariablen. Dies hat jedoch das Problem, dass Ausrufezeichen verschluckt werden, die Teil des Inhalts einer Variablen sein können. Um dieses unerwünschte Entfernen von Ausrufezeichen zu verhindern, wird die verzögerte Erweiterung von Umgebungsvariablen nur bei Bedarf aktiviert.quelle