Mit FOR-Schleife Ordner anhand Eingabeliste umbenennen und verschieben
Hallo,
irgendwie zweifel ich grad an mir selbst... aber vielleicht kann mir ja einer ein bisschen auf die Sprünge helfen.
Ich habe mehrere Ordner mit Inhalt (Dateien und weitere Ordner), diesen Inhalt möchte im selben Ordner in einen Neu erstellten Ordner verschieben.
Struktur:
Mit Hilfe der Kommandozeile wäre ich so vorgegangen:
Das Ganze möchte ich für eine Liste durchführen, die ich mit diesem Befehl erstellt habe:
Inhalt von folderlist.txt
Mit Hilfe der FOR-Schleife sieht dies bei mir dann so aus:
Das Ergebnis könnt ihr euch sicher vorstellen, aber ich weiß woran es liegt... Entweder wird meine Liste nicht richtig verarbeitet, oder die Variable nach der Sprungmarke ist totaler Mist.
Danke schon mal
irgendwie zweifel ich grad an mir selbst... aber vielleicht kann mir ja einer ein bisschen auf die Sprünge helfen.
Ich habe mehrere Ordner mit Inhalt (Dateien und weitere Ordner), diesen Inhalt möchte im selben Ordner in einen Neu erstellten Ordner verschieben.
Struktur:
C:\Temp\ab
C:\Temp\ab\Kopie von 01
C:\Temp\ab\Kopie von 02
C:\Temp\ab\Kopie von 03
C:\Temp\cd
C:\Temp\cd\Kopie von 01
C:\Temp\cd\Kopie von 02
C:\Temp\cd\Kopie von 03
C:\Temp\ef
C:\Temp\ef\Kopie von 01
C:\Temp\ef\Kopie von 02
C:\Temp\ef\Kopie von 03
Mit Hilfe der Kommandozeile wäre ich so vorgegangen:
md dummy
ren "bestehender Ordner zb ab" "XYZ"
move XYZ dummy
ren dummy ab
Das Ganze möchte ich für eine Liste durchführen, die ich mit diesem Befehl erstellt habe:
cmd /u /c dir *. /b /o:n > folderlist.txt
Inhalt von folderlist.txt
ab
cd
ef
Mit Hilfe der FOR-Schleife sieht dies bei mir dann so aus:
@echo on & setlocal
set "liste=c:\temp\folderlist.txt"
cmd /u /c dir *. /b /o:n > folderlist.txt
for /d %%i in ("%liste%") do call :work "%%i"
goto :eof
:work
md dummy
ren %%i XYZ
move XYZ dummy
ren dummy %%i
Das Ergebnis könnt ihr euch sicher vorstellen, aber ich weiß woran es liegt... Entweder wird meine Liste nicht richtig verarbeitet, oder die Variable nach der Sprungmarke ist totaler Mist.
Danke schon mal
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 158848
Url: https://administrator.de/contentid/158848
Ausgedruckt am: 26.11.2024 um 18:11 Uhr
4 Kommentare
Neuester Kommentar
moin jay,
Biber hätt jetzt gesagt: Mach da mal nicht soviel Heckmeck drum...
einmal in der CMD abgefeuert...
[Edit]eine Forvariable Funktioniert in einer Sub nicht dazu nimmst Du Parameter, welche in der Forschleife beim Call übergebn werden oder setzt vor den Call eine Variable - welche dann in der Sub verarbeitet wird[/Edit]
Gruß Phil
Biber hätt jetzt gesagt: Mach da mal nicht soviel Heckmeck drum...
einmal in der CMD abgefeuert...
pushD "D:\Mein Verzeichnis"&for /d %i in (*) do md "%i\%i" & for /r "%i" %j in (*) do @if not "%~fi\%i" == "%j" @move "%j" "%~fi\%i"
Gruß Phil
ja mein Fehler...
die for /r schleife war etwas falsch
und beim move war der Pfad zu Kurz
dann aber in etwa so
Gruß Phil
die for /r schleife war etwas falsch
und beim move war der Pfad zu Kurz
dann aber in etwa so
(for %h in ("ExtraOrdner") do pushD "D:\Mein Verzeichnis"&for /d %i in (*) do @md "%i\%~h" & @for /f "delims=" %j in ('dir /a/b "%~i\*"') do @if not "%i\%~h" == "%i\%j" @move /y "%i\%j" "%i\%~h")&popD
Gruß Phil