Batch verschiebt den Inhalt eines Ordners eine Ebene nach oben

6753
HASJ

In einigen Fällen ist dies eine einfache Aufgabe, aber ich habe Tausende von Dateien in Hunderten von Ordnern, die ich nach oben verschieben möchte.

Die Verzeichnisstruktur sieht folgendermaßen aus:

C:\Photos\subject\randomnumbers\images\file.ext

Und ich möchte mit:

C:\Photos\subject\randomnumbers\file.ext

Ich habe versucht, zu laufen, for /r %i in ("*\images\*.*") do move *\*.*aber es funktioniert nicht wie erwartet.

Ich kann mir keine andere Möglichkeit vorstellen, als dies manuell zu tun. Wenn Sie es manuell machen, funktioniert es, ich würde mit einem automatisierten Vorgang, den ich je nach Bedarf starten kann, sehr profitieren.

Es ist möglich, und kann mir jemand dabei helfen?

4
Wenn Sie Tausende von Bilddateien haben und diese verwalten möchten, sollten Sie vielleicht etwas Zeit investieren, um [exiftool] (http://www.sno.phy.queensu.ca/~phil/exiftool/) zu lernen ... Sie erreiche [was du willst] (http://www.sno.phy.queensu.ca/~phil/exiftool/#filename) und wahrscheinlich mehr. Spielen Sie einfach sicher und testen Sie eine Kopie, bevor Sie sie auf eine große Anzahl von Dateien anwenden. techraf vor 8 Jahren 1
@techraf Wow, Exiftool ist WIRKLICH mächtig, wenn man einen kurzen Blick auf seine Dokumentation hält! Werde mehr lesen, danke! HASJ vor 8 Jahren 0

3 Antworten auf die Frage

3
techraf

Das sollte für Sie funktionieren:

for /r %i in ("images\*.*") do move %i %~pi.. 
  • %~piextrahiert den Pfad von %i(endet mit \)
  • .. Nach dem obigen Pfad steht das übergeordnete Verzeichnis

Natürlich behandelt es nicht die Situation, in der sich Dateien mit widersprüchlichen Namen in Unterverzeichnissen befinden.

Wunderbar! Arbeit genau wie erwartet! Ich kann nicht glauben, dass ich das "% i" in meinem ursprünglichen Befehl vergessen habe. Ich würde auch nie daran denken, ".." zu verwenden! Vielen Dank und allen, die geantwortet haben! Hoffe, diese Antworten helfen anderen Menschen mit ähnlichen oder anderen Fragen! HASJ vor 8 Jahren 0
2
Aganju

Dies ist nicht sehr anspruchsvoll und ich bin sicher, dass die Leute bessere Lösungen finden werden, aber hier ist eine schnelle:

  1. Führen Sie eine einfache Suche (Explorer) durch *, beginnend mit dem Ordner, in den Sie das Material verschieben möchten. Es kann etwa eine halbe Minute dauern, bis der Vorgang abgeschlossen ist.
  2. Sortieren Sie das Ergebnis nach Pfad
  3. Wählen Sie alle Dateien (die Sie verschieben möchten) aus, die sich nicht bereits im Zielordner befinden (dies sind Ihre vorhandenen 'Tausende von Verzeichnissen'. Sie werden alle nach der Sortierung zusammen sein, also 'click' und 'shift +' klick 'macht's.
  4. Ziehen Sie sie in den Ordnerstrukturbaum links und legen Sie sie im Zielordner ab.
  5. Holen Sie sich einen Kaffee oder erledigen Sie andere Arbeiten, während er sich bewegt. Windows kann normalerweise 40 - 7000 Dateien pro Sekunde verschieben, abhängig von Ihrer Hardware.
  6. Wählen Sie alle nun leeren Verzeichnisse aus und löschen Sie sie.

Beachten Sie, dass Sie Schritt 1 auch mit Filtern ausführen können, wenn Sie beispielsweise nur bestimmte Dateitypen verwenden möchten *.jpg,*.png.

2
Pimp Juice IT

Batch verschiebt den Inhalt eines Ordners eine Ebene nach oben

Hier ist eine Batch-Lösung, bei der MoveFromDir das Verzeichnis ist, mit dem Sie den Inhalt beginnen, dessen Verschieben Sie verschieben. Das MoveToDir-Verzeichnis ist der explizite Verzeichnispfad, dessen Inhalt von MoveFromDir um eine Ebene nach oben verschoben wird Variablen entsprechend.

Verschieben Sie alle Ordner und Dateien in MoveFromDir und darunter in MoveToDir

Bitte beachten Sie, dass nur die zweite FOR-Schleife ausgeführt wird:

  • FOR /F "TOKENS=*" %%A IN ('DIR /S /B "%MoveFromDir%\*.jpg"')

Sie können nur die Dateierweiterungen angeben, die Sie in das MoveToDir verschieben möchten (z. B. jpg).

@ECHO ON  SET MoveToDir=C:\Photos\subject\randomnumbers SET MoveFromDir=C:\Photos\subject\randomnumbers\images  :: Move the folders from the move directory to the move to directory FOR /D %%A IN ("%MoveFromDir%\*") DO MOVE /Y "%%~A" "%MoveToDir%"  :: Move any remaining files (or folders) from the move directory to the move to directory FOR /F "TOKENS=*" %%A IN ('DIR /S /B "%MoveFromDir%\*.*"') DO MOVE /Y "%%~A" "%MoveToDir%\" GOTO EOF 

Weitere Ressourcen