Batch-Verschiebung für unterschiedliche Dateitypen in einen anderen Ordnernamen

1903
Roger

Ich habe Dateien mit

C: \ Ordnername1 \ Dateien \ Soandso1.mkv C: \ Ordnername2 \ Dateien \ Soandso2.mp4 C: \ Ordnername3 \ Dateien \ Soandso3.avi

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

Ordnername wird für jede Datei so unterschiedlich sein. Im Grunde möchte ich den Ordner "Files" loswerden und die Mediendateien in Ordnername1, 2 und 3 ablegen.

Gibt es dafür einen Batchbefehl?

0
Foldername1 \ Files enthält also nur MKVs, Foldername2 \ Files enthält nur MP4s und Foldername3 \ Files nur AVIs? Karan vor 11 Jahren 0
Nein, es könnte zufällig sein. "Ordnername" kann zu "Ordnername50" wechseln, der einen Ordner "Files" enthält. "Files" enthält entweder eine .mkv, .avi oder eine .mp4. Roger vor 11 Jahren 0
Es wäre auch schön, wenn ich einen Befehl einfügen kann, der den Ordner "Files" nach dem Verschieben löscht. Roger vor 11 Jahren 0
Da dies ein einmaliger Deal zu sein scheint, kann es keine Gründe geben, warum eine einfache Suche + Sortieren nach Erweiterung + Ausschneiden / Einfügen nicht funktioniert? Welche Version von Windows? Karan vor 11 Jahren 0
weil es mehrere "foldername" gibt, was bedeutet, dass ich in jeden von ihnen gehen muss, in "Files" gehen, ausschneiden und in den übergeordneten "foldername" einfügen muss? Gibt es eine Suchmethode zum Sortieren und Ausschneiden von Paste, von der ich nichts weiß? Ich bin ziemlich neu in dieser Art von Sachen. Roger vor 11 Jahren 0
Warten Sie, vergessen Sie meinen vorherigen Kommentar. Ich sehe jetzt, dass Sie nicht für AVI, MKV usw. einen einzelnen Ordner erstellen möchten, sondern dass jede Datei in einen eigenen übergeordneten Ordner verschoben wird. Karan vor 11 Jahren 0
das ist richtig. Roger vor 11 Jahren 0

1 Antwort auf die Frage

1
Karan

Something I put together quickly; no time to test extensively right now:

@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" ) ) 

If you run it in C:\, it will look at each top-level folder on the drive and if it contains a Files sub-folder, it will move any AVI/MKV/MP4 files found up one level (i.e. to the top-level folder), then delete the Files sub-folder.

If any other files exist in Files the folder will not be deleted. You can use rd /s /q if you want to forcibly delete. Also, move will prompt you each time to overwrite duplicates (if any), which can be done automatically by using move /y instead.

Ich verwende Windows 7, wie führe ich diesen Befehl aus? Roger vor 11 Jahren 0
Kopieren + Einfügen in den Editor, Speichern unter "D: \ Test.bat" (mit Anführungszeichen!), Öffnen Sie ein Eingabeaufforderungsfenster, navigieren Sie zu C: \, D: \ oder zu welchem ​​Laufwerk Sie es ausführen möchten und geben Sie "D: \ Test.bat" ein. Ich empfehle Ihnen, einige Ordner auf ein anderes Laufwerk zu kopieren und die Stapeldatei darauf zu testen, bevor Sie sie für Ihre gesamte Sammlung freigeben (obwohl sie keine Dateien löscht, wenn sie wie oben angegeben gespeichert sind). Karan vor 11 Jahren 0
Beeindruckend! Getestet und es funktioniert. Danke Karan! Sie haben mir gerade stundenlang Arbeit erspart. Roger vor 11 Jahren 0
Hmm ... Die Ausführung auf dem eigentlichen Laufwerk mit den Medien hat die Arbeit nicht abgeschlossen. Einige Dateien wurden nicht verschoben und einige "Files" -Ordner wurden nicht von selbst gelöscht. Vielleicht war der Stapel zu groß, um alle Befehle auszuführen, aber die meisten Aufgaben wurden erledigt. Roger vor 11 Jahren 0
Irgendwelche Fehler angezeigt? Haben Sie * bewegt * angehalten und Sie gebeten, einige Dateien mit denselben Namen zu überschreiben? Haben Sie auch die verbleibenden * Files * -Ordner überprüft - welche Dateien befanden sich noch dort? Karan vor 11 Jahren 0