(CMD) verzeichnis auflösen
hallo, ich versuche gerade verzweifelt ein befehl zusammenzuzimmern
es soll alle dateien & unterverzeichnisse eine ebene höhr verschieben
und dann das verzeichnis entfernen
ich habe das ganze schon mit robocopy bewerkstelligen können
robocopy "%~1" "%~1\.." /E /move
das problem:
robocopy verschiebt nicht wirklich sondern kopiert und köscht dann
da meine dateien auf dem selben volume nur eine ebene höhr versoben werden soll
und das z.t. gigabyte weise, ist es schon eine ziehmliche zeitverschwendung
es gibt ja noch den befehl move
das problem mit move ist, das es keine unterverzeichnisse verarbeitet
wenn man versuch das ganze in eine FOR-schleife zu packen gibt es schon wieder ein problem
denn wenn ich eine verzeichnisliste anvertigen will, müsste sie relative-pfade erzeugen,
da 1# das script schön dynamisch sein soll und 2# die ordnerstruktur gewart bleiben soll
ich habe noch kein weg gefunden wie ich den pfad %cd% (arbeitsverzeichnis) in %1 wegkürzen kann
also nochmal zurrück zum anfang
ich suche eine möglichkeit alle dateien/verzeichnisse mit struktur eine ebene höhr zu verschieben
welcher schneller arbeitet als robocopy (echtes moving)
[windows 7 ultimate x64]
p.s.
ich versuche es möglichst erstmal mit windows eigenen "on-board" werkzeugen zu lösen...
falls jemand ein grund von mir verlangt, dem sei gesagt:
sieht es als ein lernprozess um die grenzen von windows zu durchbrechen :P
es soll alle dateien & unterverzeichnisse eine ebene höhr verschieben
und dann das verzeichnis entfernen
ich habe das ganze schon mit robocopy bewerkstelligen können
robocopy "%~1" "%~1\.." /E /move
das problem:
robocopy verschiebt nicht wirklich sondern kopiert und köscht dann
da meine dateien auf dem selben volume nur eine ebene höhr versoben werden soll
und das z.t. gigabyte weise, ist es schon eine ziehmliche zeitverschwendung
es gibt ja noch den befehl move
das problem mit move ist, das es keine unterverzeichnisse verarbeitet
wenn man versuch das ganze in eine FOR-schleife zu packen gibt es schon wieder ein problem
denn wenn ich eine verzeichnisliste anvertigen will, müsste sie relative-pfade erzeugen,
da 1# das script schön dynamisch sein soll und 2# die ordnerstruktur gewart bleiben soll
ich habe noch kein weg gefunden wie ich den pfad %cd% (arbeitsverzeichnis) in %1 wegkürzen kann
also nochmal zurrück zum anfang
ich suche eine möglichkeit alle dateien/verzeichnisse mit struktur eine ebene höhr zu verschieben
welcher schneller arbeitet als robocopy (echtes moving)
[windows 7 ultimate x64]
p.s.
ich versuche es möglichst erstmal mit windows eigenen "on-board" werkzeugen zu lösen...
falls jemand ein grund von mir verlangt, dem sei gesagt:
sieht es als ein lernprozess um die grenzen von windows zu durchbrechen :P
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 11.12.2010 um 22:54:26 Uhr
hallo, ich versuche gerade verzweifelt ein befehl zusammenzuzimmern
Na dann verschieb ich dich mal von "Windows-oder-wie-es-heisst" nach "Batch & Shell".Wer schickt denn immer diese Verzweifelten in unser Forum?
Content-Key: 156811
Url: https://administrator.de/contentid/156811
Ausgedruckt am: 28.03.2024 um 12:03 Uhr
6 Kommentare
Neuester Kommentar
Hallo Mik.c.OS!
Soll demnach das derzeitige "Start"-Verzeichnis der Struktur aufgelassen werden? Wenn ja, würde ich das (völlig ungetestet) so versuchen:
Achtung: In einem Batch überschreibt "
Das "
Grüße
bastla
das problem mit move ist, das es keine unterverzeichnisse verarbeitet
Würde ich der Gerüchteküche zuordnen ...Soll demnach das derzeitige "Start"-Verzeichnis der Struktur aufgelassen werden? Wenn ja, würde ich das (völlig ungetestet) so versuchen:
pushd %1
for /f "delims=" %%i in ('dir /a /b') do move "%%i" ..
popd
rd %1
move
" ohne Rückfrage (daher vielleicht noch ein "if not exist
" ergänzen)!Das "
rd
" hat übrigens absichtlich kein "/s /q
" - falls trotz des "/a
" beim "dir
" nicht alle Dateien / Verzeichnisse "erwischt" worden sein sollten ...Grüße
bastla
Hallo Mik.c.OS!
Mit nur einem "%"-Zeichen für die Schleifenvariable in einem Batch schon mal gar nicht (und wenn es kein Batch ist, ist "
Wenn der Batch tatsächlich allgemein verwendbar (und von einem beliebigen Pfad aus startbar) sein soll, müsstest Du komplette Pfade (auch für das Ziel, da sich "
Grüße
bastla
for /f "delims=" %i in ('dir "%~1" /a /b') do move "%i" ..
reicht völlig aus%~1
" leer, womit wir wieder bei meinem Ansatz oben wären), und ansonsten auch nur, wenn Du aus dem entsprechenden Verzeichnis startest (dann wiederum ist "%~1"
auch unnötig und es braucht natürlich auch kein "pushd
", um in dieses Verzeichnis zu wechseln) ...Wenn der Batch tatsächlich allgemein verwendbar (und von einem beliebigen Pfad aus startbar) sein soll, müsstest Du komplette Pfade (auch für das Ziel, da sich "
..
" ohne Pfad davor auf das Verzeichnis, von dem aus gestartet wurde, bezieht) erzeugen, da ja "dir /b
" nur Datei-/Verzeichnisnamen, aber (ohne "/s", und das wäre hier kontraproduktiv) keine vollständigen Pfade liefert:for /f "delims=" %%i in ('dir "%~1" /a /b') do move "%~1\%%i" "%~1\.."
bastla