Verschieben für verschiedene Dateitypen in einen anderen Ordnernamen

0

Ich habe Dateien mit in

C: \ Ordnername1 \ Files \ soandso1.mkv C: \ Ordnername2 \ Files \ soandso2.mp4 C: \ Ordnername3 \ Files \ soandso3.avi

Ich möchte die Dateien ".mkv", ".mp4" und ".avi" zurück in den übergeordneten Ordner "Ordnername1, 2, 3" verschieben.

Der Ordnername ist für jede soandso-Datei unterschiedlich. Grundsätzlich möchte ich den Ordner "Files" loswerden und die Mediendateien in den Ordnernamen 1, 2 und 3 ablegen.

Gibt es dafür einen Batch-Befehl?

Roger
quelle
Foldername1 \ Files enthält also nur MKVs, Foldername2 \ Files enthält nur MP4s und Foldername3 \ Files enthält nur AVIs?
Karan
Nein, es könnte zufällig sein. "Ordnername" kann bis zu "Ordnername50" gehen, der einen Ordner "Dateien" enthält. In "Dateien" befindet sich entweder eine .mkv-, .avi- oder .mp4-Datei.
Roger
Außerdem wäre es schön, wenn ich einen Befehl einfügen könnte, der den Ordner "Files" nach dem Verschieben löscht.
Roger
Da dies ein einmaliger Deal zu sein scheint, gibt es einen Grund, warum eine einfache Suche + Sortierung nach Erweiterung + Ausschneiden / Einfügen nicht funktioniert? Welche Windows-Version?
Karan
weil es mehrere "Ordnernamen" gibt, was bedeutet, ich muss in jeden von ihnen gehen, in "Dateien" gehen, ausschneiden und in den übergeordneten "Ordnernamen" einfügen? Gibt es eine Technik zum Sortieren und Ausschneiden und Einfügen, die ich nicht kenne? Ich bin ziemlich neu in dieser Art von Sachen.
Roger

Antworten:

1

Etwas, das ich schnell zusammengestellt habe; Keine Zeit zum ausgiebigen Testen:

@echo off
for /f "delims=" %%d in ('dir /b/ad-s-h') do (
    if exist "%%d\Files" (
        pushd "%%d\Files"
        if exist *.avi move *.avi ..
        if exist *.mkv move *.mkv ..
        if exist *.mp4 move *.mp4 ..
        popd
        rd "%%d\Files"
    )
)

Wenn Sie es in C: \ ausführen, werden alle Ordner der obersten Ebene auf dem Laufwerk überprüft. Wenn es einen Unterordner " Files" enthält , werden alle gefundenen AVI / MKV / MP4-Dateien um eine Ebene nach oben verschoben (dh nach oben) -level folder) und löschen Sie dann den Unterordner Files .

Wenn andere Dateien in Dateien vorhanden sind, wird der Ordner nicht gelöscht. Sie können verwenden, rd /s /qwenn Sie gewaltsam löschen möchten. Außerdem fordert move Sie jedes Mal auf, Duplikate (falls vorhanden) zu überschreiben. Dies kann stattdessen automatisch mit ausgeführt move /ywerden.

Karan
quelle
Ich verwende Windows 7. Wie führe ich diesen Befehl aus?
Roger
Kopieren + Einfügen im Editor, Speichern unter "D: \ Test.bat" (mit Anführungszeichen!), Öffnen eines Eingabeaufforderungsfensters, Navigieren zu C: \, D: \ oder zu dem Laufwerk, auf dem Sie es ausführen möchten , und Typ D:\Test.bat. Ich rate Ihnen, einige der Ordner auf ein anderes Laufwerk zu kopieren und die Batch-Datei zuerst zu testen, bevor Sie sie in Ihrer gesamten Sammlung verlieren (obwohl keine Dateien gelöscht werden, wenn sie wie oben gespeichert werden).
Karan
Beeindruckend! Getestet und es funktioniert. Vielen Dank, Karan! Du hast mir gerade Stunden Arbeit damit gespart.
Roger
Hmm ... das Ausführen auf dem tatsächlichen Laufwerk mit dem Medium hat die Arbeit nicht abgeschlossen. Einige Dateien wurden nicht verschoben und einige "Dateien" -Ordner wurden nicht von selbst gelöscht. Vielleicht war es zu umfangreich, um alle Befehle auszuführen, aber der größte Teil der Arbeit wurde erledigt.
Roger
Irgendwelche Fehler angezeigt? Hat move angehalten und Sie aufgefordert, einige Dateien mit demselben Namen zu überschreiben? Außerdem haben Sie die überprüfen Dateien Ordner , die geblieben - welche Dateien waren noch drin?
Karan