Eine Ebene aus einem Verzeichnisbaum herausnehmen

345
Jake

Ich versuche seit einiger Zeit, einen effizienten Weg zu finden, um die großen Verzeichnisbäume von mehr als 10 externen Festplatten zu komprimieren. Ich werde das Problem ausführlich beschreiben, um Missverständnisse (hoffentlich) zu vermeiden und Zeit zu sparen. Bitte ertragen Sie mich, ich bin mit meinen DOS-Befehlen auf einem ziemlich einfachen Niveau.

Die aktuelle Struktur ist:

X: \ [Hauptverzeichnis] ​​\ [verschiedene Verzeichnisse Ebene 2] \ [verschiedene Verzeichnisse Ebene 3] \ [viele Dateien und Unterverzeichnisse]

Die gewünschte Struktur ist:

X: \ [Hauptverzeichnis] ​​\ [verschiedene Verzeichnisse Ebene 2] \ [Dateien und Unterverzeichnisse]

Ich möchte also Stufe 3 fett hervorheben . Ich habe die verschiedenen Lösungsvorschläge für ähnliche Probleme, die ich im Web gefunden habe, studiert und experimentiert, von einfachen Befehlen bis hin zu Batchdateien und VBS-Skripts, jedoch ohne Erfolg.
Die Tatsache, dass die Verzeichnisse der Ebene 3 (wie auch die Verzeichnisse der Ebene 2) alle unterschiedliche Namen haben, macht die Angelegenheit viel komplizierter, aber ich habe einen relativ einfachen manuellen Weg (Explorer) gefunden, um alle Verzeichnisse der Ebene 2 umzubenennen gleicher Name. So kann ich die Struktur in konvertieren:

X: \ [Hauptverzeichnis] ​​\ [verschiedene Verzeichnisse Ebene 2] \ [XXX] \ [viele Dateien und Verzeichnisse]

Mit diesem (hoffentlich nützlichen) Kontext, wo ich stecke. Nach vielen Versuchen habe ich den folgenden Befehl fast korrekt an der Eingabeaufforderung zu arbeiten:

für / R% i in ("XXX \ . ") xcopy "% i" "% ~ pi .." / S / E
[Leerzeichen um Schrägstrich hinzugefügt]

Eine verbleibende Störung besteht darin, dass Unterverzeichnisse auf der untersten Ebene um eine Ebene nach oben kopiert werden, jedoch aus einem merkwürdigen Grund nicht die in diesen Unterverzeichnissen enthaltenen Dateien. Gibt es einen Parameter, der das löst?
Ein viel größeres Problem ist jedoch, dass ich zu haben MOVE die Quelldateien, da die Festplatten fast voll und nicht in der Lage sind, eine Kopie aller Dateien zu halten ...

Aufgrund von Vorschlägen, die ich im Forum gelesen hatte, wandte ich mich an ROBOCOPY . Die Syntax, in die ich gekommen bin, lautet:

für / R% i in ("XXX \ . ") robocopy / MOVE / S / E "% i" "% ~ pi .."
[Leerzeichen um Schrägstrich hinzugefügt]

Leider funktioniert dies nicht an der Eingabeaufforderung (weder in Power Shell noch als Batch-Datei, btw, die jeweils unterschiedliche Fehler enthält). Es wird der Fehler zurückgegeben

"FEHLER 123 (0x0000007B) Zugriff auf Quellverzeichnis X: \ Hauptverzeichnis \ Unterschiedliche Verzeichnisebene 2 \ XXX \ Dateiname.ext \
Die Syntax von Dateiname, Verzeichnisname oder Datenträgerbezeichnung ist falsch."

Anscheinend erfordert ROBOCOPY andere Verzeichnis- / Dateiverweise als XCOPY. Ich habe mit Schrägstrichen, Anführungszeichen und Sternchen experimentiert, aber ich stecke fest ... Hat jemand eine Lösung? Danke vielmals!

0

0 Antworten auf die Frage