1000 Ordner eine Ebene hoch verschieben
Hallo,
ich habe ca. 1000 Ordner.
Unter c:\abc\dfg\ hier liegen 1000 Ordner mit je einem Unterordner, jetzt sollen alle Unterordner direkt in c:\abc\dfg\liegen. Die Namen sollten vom Unterordner übernommen werden. Wenn es einen Ordner gibt der keine Unterordner hat so solle dieser nicht verschoben werden.
Gruß
ich habe ca. 1000 Ordner.
Unter c:\abc\dfg\ hier liegen 1000 Ordner mit je einem Unterordner, jetzt sollen alle Unterordner direkt in c:\abc\dfg\liegen. Die Namen sollten vom Unterordner übernommen werden. Wenn es einen Ordner gibt der keine Unterordner hat so solle dieser nicht verschoben werden.
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 129755
Url: https://administrator.de/forum/1000-ordner-eine-ebene-hoch-verschieben-129755.html
Ausgedruckt am: 06.04.2025 um 01:04 Uhr
8 Kommentare
Neuester Kommentar
Moin bodyparts,
wo treibt ihr immer so abstruse Szenarien auf??
Egal... im Prinzip würde ich es so abfackeln (Demo am CMD-Prompt; ">" ist mein Prompt/nicht mit abtippen)
Würde bei mir zu folgender Ausgabe führen:
weil ich ja geschrieben hatte:
.......... for /d %i in (f:\downloads\s*) do @for /d %j in ("%i\*") do @echo move "%i\%~nxj" "%~dpi%~nxj"
Aufgedröselt...
Soweit die Strategie.
Zwei Unwägbarkeiten:
a) Kollisionen werden nicht behandelt. Der erste Unter-Unterordner mt dem Namen "source" wird verschoben... die nächsten Gleichnamigen schauen in die Röhre.
b) es wird eine Liste von Unterverzeichnissen mit FOR /D abgearbeitet und während der Abarbeitung verändert. Kann klappen, muss aber nicht.
Also für dich nachzuarbeiten
a) Wie umgehen mit Kollisionen? Klar, du wirst sagen: "Kann nicht vorkommen.."*lach* ---> dein Problem.
b) Liste ändert sich während Verarbeitung--> zeitlich entzerren. Die Ausgabe oben in eine neue Text/bat-Datei schreiben und die NACH SICHTKONTROLLE starten.
Grüße
Biber
wo treibt ihr immer so abstruse Szenarien auf??
Egal... im Prinzip würde ich es so abfackeln (Demo am CMD-Prompt; ">" ist mein Prompt/nicht mit abtippen)
>for /d %i in (f:\downloads\s*) do @for /d %j in ("%i\*") do @echo move "%i\%~nxj" "%~dpi%~nxj"
move "f:\downloads\sqldeveloper\BC4J" "f:\downloads\BC4J"
move "f:\downloads\sqldeveloper\dvt" "f:\downloads\dvt"
move "f:\downloads\sqldeveloper\ide" "f:\downloads\ide"
move "f:\downloads\sqldeveloper\j2ee" "f:\downloads\j2ee"
move "f:\downloads\sqldeveloper\jdbc" "f:\downloads\jdbc"
move "f:\downloads\sqldeveloper\jdev" "f:\downloads\jdev"
move "f:\downloads\sqldeveloper\jdk" "f:\downloads\jdk"
move "f:\downloads\sqldeveloper\jlib" "f:\downloads\jlib"
move "f:\downloads\sqldeveloper\lib" "f:\downloads\lib"
move "f:\downloads\sqldeveloper\rdbms" "f:\downloads\rdbms"
move "f:\downloads\sqldeveloper\sqldeveloper" "f:\downloads\sqldeveloper"
move "f:\downloads\sqldeveloper\timingframework" "f:\downloads\timingframework"
move "f:\downloads\scalabium\msgview" "f:\downloads\msgview"
move "f:\downloads\scalabium\fdv" "f:\downloads\fdv"
move "f:\downloads\scalabium\testfiles" "f:\downloads\testfiles"
weil ich ja geschrieben hatte:
.......... for /d %i in (f:\downloads\s*) do @for /d %j in ("%i\*") do @echo move "%i\%~nxj" "%~dpi%~nxj"
Aufgedröselt...
- for /d %i in (f:\downloads\s*) do mit allen Unterzeichnissen von Downloads. die der Wildcard "s*" entsprechen...
- ... @for /d %j in ("%i\*") do ... verfahre, FALLS sie eine Ordnerebene darunter haben, wie folgt...
- ...@echo move "%i\%~nxj" "%~dpi%~nxj" ...MOVE diesen Ordner eine Ebene höher (oder zeig es wenigstens an per ECHO)
Soweit die Strategie.
Zwei Unwägbarkeiten:
a) Kollisionen werden nicht behandelt. Der erste Unter-Unterordner mt dem Namen "source" wird verschoben... die nächsten Gleichnamigen schauen in die Röhre.
b) es wird eine Liste von Unterverzeichnissen mit FOR /D abgearbeitet und während der Abarbeitung verändert. Kann klappen, muss aber nicht.
Also für dich nachzuarbeiten
a) Wie umgehen mit Kollisionen? Klar, du wirst sagen: "Kann nicht vorkommen.."*lach* ---> dein Problem.
b) Liste ändert sich während Verarbeitung--> zeitlich entzerren. Die Ausgabe oben in eine neue Text/bat-Datei schreiben und die NACH SICHTKONTROLLE starten.
Grüße
Biber
Moin bodyparts,
Ich will dich ja nicht frustieren, aber wenn das reale Leben sich reduziert auf Anwendungen, die 1000 Unterordner mit je einem Unterordner anlegen...
... aber das würde den beschränkten Horizont dieses Skriptbereichs sicherlich sprengen...

*grübel*
Ohmm....
*grübel*
Was genau war jezz' noch mal der Unterschied zwischen "leeren Ordnern" und "besser die in den keine Datei sind"?
*kopfkratz*
Abgesehen davon... nur Mut!
Ich hab doch jetzt vorgekaspert, wie sich ein Oneliner aufdröseln lässt.
Jetzt machst Du das Ganze noch mal umkehrt (zusammenbraten statt aufdröseln) und mit einer kleinen Variation (Prüfung IF NOT EXIST o.ä.).
Ach ja - und poste das Ergebnis bitte
Schönes Wochenende
Biber
P.S. Sollte es wider Erwarten irgendwo klemmen... wir sind hier.
Ich will dich ja nicht frustieren, aber wenn das reale Leben sich reduziert auf Anwendungen, die 1000 Unterordner mit je einem Unterordner anlegen...
... aber das würde den beschränkten Horizont dieses Skriptbereichs sicherlich sprengen...
Klappt super, aber......
Wo bleibt dann der güllefarbene Haken? kann man die "leeren" Ordner jetzt löschen, oder besser die in den keine Datei sind?
*grübel**grübel*
Ohmm....
*grübel*
Was genau war jezz' noch mal der Unterschied zwischen "leeren Ordnern" und "besser die in den keine Datei sind"?
*kopfkratz*
Abgesehen davon... nur Mut!
Ich hab doch jetzt vorgekaspert, wie sich ein Oneliner aufdröseln lässt.
Jetzt machst Du das Ganze noch mal umkehrt (zusammenbraten statt aufdröseln) und mit einer kleinen Variation (Prüfung IF NOT EXIST o.ä.).
Ach ja - und poste das Ergebnis bitte
Schönes Wochenende
Biber
P.S. Sollte es wider Erwarten irgendwo klemmen... wir sind hier.
Moin bodyparts,
könnte sein, dass dort "Leerzeichen im Dateinamen" enthalten sind.
Dieses Problemchen ließe sich durch "Anführungszeichen drumherum" beheben.
Beispiel:
Grüße
Biber
kl Rückmeldung.... da stehen Sonderzeichen in den Ordnern, also [xcvbnm] sgsgsdf usw....
die werden wohl nicht verschoben, jedenfalls bleiben die unverändert....
die werden wohl nicht verschoben, jedenfalls bleiben die unverändert....
könnte sein, dass dort "Leerzeichen im Dateinamen" enthalten sind.
Dieses Problemchen ließe sich durch "Anführungszeichen drumherum" beheben.
Beispiel:
for /d %i in (f:\abc\*) do if not exist "%i\*.txt" rd "%i"
Grüße
Biber