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?


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.