Wie Ordner per Batch verschieben

Squicky

Lt. Commander
Registriert
Sep. 2002
Beiträge
1.405
Hallo

Wie kann man einen Ordner mit allen seinen Dateien und Unterordner verschieben?
Es würde auch reichen den Inhalt (Dateien und Unterordner) zu verschieben.

Nur die Dateien zu verschieben ist einfach:
Code:
Move C:\alterOrdner\*.* D:\neuerOrdner\

Aber damit werden nur die Dateien, aber nicht die Unterordner verschoben.

Wie kann man alles verschieben?

P.S. Es soll verschoben werden. Nicht kopieren und alten Ordner löschen. (Für eine Kopie ist nicht genug Speicherplatz)

Danke
 
Zuletzt bearbeitet:
MOVE tut die Verzeichnisse nur umbenennen, deshalb ist es nicht möglich mit diesem Befehl Verzeichnisse zwischen unterschiedlichen Dateisystemen oder Laufwerken zu verschieben.

Eigentlich ist es so das Windows und auch andere BS beim Verschieben (Ausschneiden usw.) erst die Datei kopiert und dann löscht, im Grunde müsstest du einfach einen Skript schreiben der dann das auch macht.

Mit der Begründung "Für eine Kopie ist nicht genug Speicherplatz" kann ich ehrlich gesagt nicht anfangen, entweder du verschiebst innerhalb eines Laufwerks (was die Begründung erklären würde) mit dem Befehl
Code:
MOVE C:\Verzeichnis_1 C:\Verzeichnis_2
oder vom LW zu LW, aber dann musst so oder so für genügen Speicherplatz sorgen und die Methode mit kopieren/löschen anwenden.


MfG JackRipper
 
Zuletzt bearbeitet:
außer das laufwerk d: wäre zb mit subst aus einem verzeichnis in laufwerk c eingebunden, dann würde die aussage mit dem fehlenden speicherplatz eventuell sinn machen...

falls es jedoch zwei verschiedenen partitionen bzw logische laufwerke innerhalb der partition sind, macht die aussag bzgl speicherplatz keinen sinn, dann mit xcopy und rd arbeiten...
 
Windows macht es aber meinen Beobachtungen nach beim Verschieben auf eine andere Partition anders: Es wird nicht erst der ganze Ordner kopiert und dann gelöscht sondern dateiweise kopiert und gelöscht. Somit braucht man nur zusätzlichen Speicherplatz in Höhe der größten enthaltenen Datei.

Ein fertiges Script habe ich dazu auch nicht. Letztlich müsste man eine Funktion x schreiben welche das Verzeichnis listet und jede Datei (!) einzeln kopiert. Für jeden aufgefundenen Ordner wird dagegen die Funktion x aufgerufen so dass man praktisch immer tiefer hinabsteigt.

Edit: So in der Art gehts wohl etwas einfacher, vielleicht mal als Anstoß:
Code:
@echo off
for /f "delims=" %%i in ('dir C:\xyz\ /s/b/aD') do call :1 %%i

for /f "delims=" %%i in ('dir C:\xyz\ /s/b/a-D') do call :2 %%i
goto :eof

:1
rem Ordner anlegen
echo Ordner: %1
rem mkdir <Ziel zusammenbasteln>
goto :eof

:2
rem Dateien kopieren (copy) und löschen (del)
echo Datei: %1
rem copy %1 <Ziel zusammenbasteln>
rem del %1
Das Ziel zusammenbasteln ist wohl bisschen komplizierter.
Pfade extrahieren geht hiermit: http://windowsitpro.com/article/articleid/13443/how-do-i-pass-parameters-to-a-batch-file.html
Des Weiteren braucht man vielleicht Substrings denke ich weil man ja absolute Pfade hat.
Und es gibt wohl auch Problemchen mit Leerzeichen im Dateinamen die so nicht richtig übergeben werden...
 
Zuletzt bearbeitet:
Zurück
Oben