Verschieben Sie Dateien aus mehreren Ordnern mit der Eingabeaufforderung in das übergeordnete Verzeichnis

8

Ich habe mehrere .rar-Dateien in mehreren Ordnern wie folgt:

C:\Docs\Folder1\rarfile1-1.rar
C:\Docs\Folder1\rarfile1-2.rar
C:\Docs\Folder1\rarfile1-3.rar  

C:\Docs\Folder2\rarfile2-1.rar
C:\Docs\Folder2\rarfile2-2.rar
C:\Docs\Folder2\rarfile2-3.rar  

C:\Docs\Folder3\rarfile3-1.rar
C:\Docs\Folder3\rarfile3-2.rar
C:\Docs\Folder3\rarfile3-3.rar  

Ich möchte alle .rar-Dateien in das übergeordnete Verzeichnis 'C: \ Docs' verschieben. Ich habe viel mehr als 3 Ordner, also habe ich darüber nachgedacht, eine Batch-Datei oder so etwas zu erstellen. Was wären die Befehle, um dies zu tun?
Vielen Dank

Nick
quelle
Ich habe nach einem ähnlichen Problem gesucht und fand diese Antwort nützlich.
Lalthomas

Antworten:

14

Ich habe gerade eine Befehlszeilenanwendung erstellt, die genau dies tut (plus einige Statistiken anzeigt) und gesucht, ob jemand versucht hat, dies zu tun, damit ich es teilen und jemanden davon abhalten kann, es herauszufinden.

Es hat viel Spaß gemacht zu schreiben. Benötigt .NET 3.5, funktioniert über die Befehlszeile, ruft mit -h oder ohne Parameter zur Verwendung auf.

MoveFilesUpFromSubfolders
(Quellcode)

Feedback ein Plus! :) :)

Oh, und Screenshot davon, wie es aussieht:

                               

Camilo Martin
quelle
3
+1 Schreiben eines Programms zur Lösung eines Problems. Das ist Verpflichtung!
Li-aung Yip
1
@ Li-aungYip Vielen Dank für das Kompliment! Aufgrund der Umstände habe ich auch nicht mehr die Festplatte, auf der ich in der Zeit, in der ich dies gemacht habe, Code geschrieben habe (nachdem ich dies und viele andere Dinge verloren habe). Daher bin ich sehr froh, sie hier zu sehen und habe sie jetzt heruntergeladen ( Ein großes Lob an Mediafire für die lange Speicherung mit wenigen Downloads, und ich bin froh, dass ich es nicht in Megaupload gespeichert habe!). Also, wenn Sie es in die richtige Perspektive setzen, je mehr Sie geben, desto mehr erhalten Sie :)
Camilo Martin
Gute Arbeit! +1 und 50 Wiederholungen Ich weiß, dass dies 4,5 Jahre alt ist, aber das war sehr nützlich für mich, weil ich über 90 Dateien heruntergeladen habe, die in über 90 Ordnern gespeichert waren. Dies hat mir geholfen, alle Dateien in den übergeordneten Ordner zu legen.
Die einzige Kritik, die ich habe, ist, dass, als ich versuchte, dies zu verwenden, immer wieder ein Fehler über ein Problem mit dem Ordner auftrat und nicht angegeben wurde, warum. Nur mit dem Befehl -t konnte ich feststellen, warum ein Problem mit dem Ordner aufgetreten ist (da er mit mehr als 250 Zeichen benannt wurde). Dies kann leicht umgangen werden, indem alle Ordner markiert und einer von ihnen umbenannt werden (der Rest wird mit einer Nummer versehen).
@ edmastermind29 Ich bin super froh zu wissen, dass solch ein alter Code von mir noch für jemanden von Nutzen war. Ob Sie es glauben oder nicht, das Quellcodearchiv wurde aus mediafire entfernt, weil es automatisch als Urheberrechtsverletzung gekennzeichnet wurde (was ziemlich absurd ist, wenn man bedenkt, dass es dort kein Video oder Audio, sondern nur Text gibt), und ich habe keine Ahnung, wie ich das gemacht habe . Wenn es von Nutzen ist, würde ich an dieser Stelle einen Bash-Einzeiler schreiben, um ein Problem wie dieses zu lösen, so etwas wie mv dir/sub/* dir; rmdir dir/subin einer Schleife.
Camilo Martin
7

Probieren Sie es aus:

for /d %f in (docs\*) do (
pushd %f
move .\*.* ..
popd
)
BillP3rd
quelle
Können Sie das etwas näher erläutern?
Nick
@Nick: Geben Sie für alle Ordner in docsden Ordner ein. Verschieben Sie alle Dateien vom aktuellen Ordner in den übergeordneten Ordner. Kehren Sie zum übergeordneten Ordner zurück.
Hallo71
Das pushdund popdist nicht wirklich notwendig. cdwürde gut funktionieren.
Hallo71
Wie von Hello71 erklärt. for /d %f in (docs\\*) do move %f\\*.* docs
Könnte auch
NB. Weder das obige Original noch der Einzeiler werden mit doppelten Dateinamen richtig umgehen.
BillP3rd
5

Die Antwort auf Ihre Frage ist sehr einfach. Es ist kein Skript, aber es wird reichen.

Ich habe angenommen, dass Sie Windows ausführen.

  • Legen Sie sich im Verzeichnis C: \ Docs ab
  • Drücken Sie F3 (Suche)
  • Suche nach * .rar
  • Drücken Sie Strg + A.
  • Drücken Sie Strg + X.
  • Schließen Sie das Suchfenster und gehen Sie im Explorer erneut zu C: \ Dosc
  • Fügen Sie ausgeschnittene Dateien ein, indem Sie STRG + V drücken.
integratorIT
quelle
+1 für eine nette und einfache Problemumgehung ohne Drittanbieter oder Skripte.
Syakur Rahman
+ 1 beste und schnellste Methode A +++
Krankster
3

Das Saugen hat bei diesem Thema für mich funktioniert.

Suction ist eine kostenlose, tragbare App, mit der Sie unordentliche Ordner in kürzester Zeit sortieren können.

Die Absaugung erfolgt durch Konsolidierung der übergeordneten Verzeichnisse. Wenn Ihr Bilderverzeichnis beispielsweise voller unnötiger Ordner ist, ziehen Sie den Ordner in die Suction-Oberfläche. Dadurch werden die Ordner entfernt, sodass Sie nur noch die Dateien haben. Dies ist auch nützlich für Leute, die viele Dinge herunterladen.

Raystafarian
quelle
0

Das sollte funktionieren:

move C:\Docs\*\* C:\Docs
Hallo71
quelle
2
Ich erhalte die Fehlermeldung: Der Dateiname, der Verzeichnisname oder die Datenträgerbezeichnungssyntax sind falsch.
Nick
Das ** hat nicht funktioniert
Nick
Sie müssen sicherstellen, dass Sie das `\` eingeben und dass es nicht von Ihrem Texteditor maskiert wird.
Hallo71
Das Ausgeben dieses Befehls über eine CMD-Eingabeaufforderung (in Windows 7) generiert den von Nick festgestellten Fehler.
BillP3rd
Das wird nicht funktionieren. * funktioniert nicht richtig für Ordner. Ich muss die Programme von Drittanbietern wie Total Commander ausbrechen.
Surfasb
0

Beispiele für das Kopieren oder Verschieben von Dateien aus Unterverzeichnissen in ein einzelnes Verzeichnis

für / f "tokens = *"% a in ('dir "C: \ Temp \ Epub * .epub" / s / b') kopiere / y "% a" C: \ Temp \ epub.

für / f "tokens = *"% a in ('dir "C: \ Temp \ Epub * .epub" / s / b') verschieben Sie / y "% a" C: \ Temp \ epub

"tokens = *" dient zum Erfassen von Pfaden mit Sonderzeichen

user340812
quelle