sehr viele Überordner löschen per Batch

Klaus0815

Lt. Junior Grade
Registriert
Feb. 2017
Beiträge
282
Hi,

ich habe ca. 200 Ordner namens abcd (1) bis (199)

In jedem Ordner befindet sich je ein Unterordner mit den unterschiedlichsten Namen. bekomme ich es irgendwie hin (gern auch per batch) dass ich den Inhalt aller 200 Ordner raushole? ich will mir quasi die Ebene abcd sparen und die Unterordner gleich alle in einem Ordner versammeln.

Leider kann man nicht einfach nach den Unterordnern per Windowssuche suchen und die dann ausschneiden und in einem Ordner wieder einfügen weil die Unterordner keinerlei namentliche Gemeinsamkeiten haben.

Ich hoffe ich konnte es verständlich erklären...

Danke im Voraus
 
Jap kann man machen per Batch. Einfach eine Schleife die alle Ordner durchgeht (zählen ja hoch) und dann per xcopy alles darin einfach eine Ebene höher wieder einfügt und danach den Ordner löscht.
 
Haben sie eine Gemeinsamkeit?
Länge der Namen, Zahlen vorhanden, sonst etwas in der Gleichen Ebenne der Ordner vorhanden? (die evt. nicht gelöst werden dürfen?)

@Ic3HanDS
Einfach eine Schleife die alle Ordner durchgeht (zählen ja hoch) und dann per xcopy alles darin einfach eine Ebene höher wieder einfügt und danach den Ordner löscht.

Wie meinst du das?
kannst mal das Batch darstellen?
 
Danke erstmal für die schnelle Antwort.

Ja, die Ordner haben dahingehend eine Gemeinsamkeit dass die fortlaufend nummeriert sind und dahinter einen unterschiedlichen Namen haben also ca. so:

abcd (1)\001 - Müller
abcd (2)\002 - Schulz
...
...
...
abcd (198)\198 - Jankovsky
abcd (199)\199 - Schmidt

Die Namenslänge ist also nicht gleich. Die einzige Gemeinsamkeit ist die fortlaufende Nummerierung und die Formatierung bis zum Leerzeichen hinter dem "-"

Ich bin leider kein Batchprofi. Wie müsste die Datei aussehen die ich ausführen soll... In Zukunft werde ich das natürlich sinnvoller gestalten. Ich muss aber aus dem Chaos hier erstmal ein System machen. Vielen Dank im Voraus.
 
Zuletzt bearbeitet:
Ich schreib das Script mal schnell :D
 
mach es einfach:
alles löschen
und das einfügen als script

for /L %%i in (1,1,199) do md %%i

und du hast deine 199 leere ordner
jeder ordner wird somit mit
1
2
3
4
5
...
199
beschriftet

...................................
Nah... hats nun geklappt?
 
Zuletzt bearbeitet: (Nachfrage)
Code:
$hauptpfad = 'C:\Neuer Ordner'
cd $hauptpfad
$ordner = dir
foreach ($element in $ordner) {
    xcopy $element.Name $hauptpfad /c /v /q /e /y
    Remove-Item -Path $element.Name -Recurse
}

Hier mal als Powershell. Die Unterschiedlichen Namen sind allerdings auch kein Problem mehr. Hat länger gedauert, kam noch ein Anruf rein :D

Kurze Erläuterung was das Script macht:
Es wechselt in den Pfad den du bei Hauptpfad angibst. Liest alle Ordner aus. Geht dann durch jeden Ordner durch, kopiert den gesamten Inhalt in den Hauptpfad, also den Übergeordneten Ordner, und löscht dann alles was er kopiert hat. Beim kopieren prüft er auch ob alles richtig kopiert wurde. Es gibt also keine defekten Dateien.
Ergänzung ()

PlayMasterXL schrieb:
und du hast deine 199 leere ordner
jeder ordner wird somit mit

​Ich denke er hat noch Daten in den Ordnern drin die er behalten möchte ;)
 
Zuletzt bearbeitet: (Erläuterung Code)
Ic3HanDs schrieb:
​Ich denke er hat noch Daten in den Ordnern drin die er behalten möchte ;)

So sieht es aus. Habe ich vergessen zu schreiben. ;) Vielen Dank für die Mühe.

Werde das heute Abend sofort ausprobieren.
 
Zuletzt bearbeitet:
Dann gib doch bitte eine kurze Rückmeldung ob alles funktioniert hat. Ich habe es hier zwar mal schnell anhand eines Testordners ausprobiert, empfehle aber immer lieber einmal ein Backup bei solchen Dateioperationen zu machen :)

Und bitte beachten das es ein Powershell Script ist. KEIN BATCH! Also bitte in eine Datei kopieren und diese in .ps1 umbenennen ;)
 
Zuletzt bearbeitet:
Wenn ich dein Script richtig deute verschiebst du einfach alle Unterordner eine Ebene höher, egal wie sie heißen? Genau so dachte ich mir das auch, wusste nur nicht dass man das per Batch so regeln kann.

Ja, ich mache vorher ein Backup... ;) Feedback kommt selbstverständich.

Danke nochmal und Grüße aus Halle Saale
 
Ist auch kein Batch, ist Powershell :D

Geht auch per Batch, da ist jedoch der Syntax anders und die Befehle heißen leicht anders. Ich bin jedoch inzwischen rein bei Powershell weil die wesentlich mehr kann.
 
Ähhh.... *.* in dem Überordner suchen, alle Ordner die nicht 1-199 sind ausschneiden und an neuen Ablageort verschieben, Ordner 1-199 löschen, fertig. Schneller gemacht als ich es hier geschrieben habe.
 
@Ic3Hans

Ja, Powershell. Dachte die Dateien nennt man auch Batch. Powershells hab ich auch schon erstellt. ;)

@Benzer

Manchmal sieht man halt den Wald vor lauter Bäumen nicht. *.* in der Suche listet auch die Unterordner auf? Wenn ja würde es ja funktionieren. Die Ergebnisse einfach nach Namen sortieren und alle Ordner mit 001, 002 usw. auschneiden und einfügen. Werde ich heute Abend auch probieren.

Danke euch beiden, mehr wenn ich erfolgreich war. ;)
 
Listet alles auf, auch Unterordner und deren Unterordner, such dir deine Ebene einfach raus und fertig.
Wenn es nur um ein paar geht würde ich es so machen, bei zehntausenden über ein Skript.
Bei solchen Aktionen hilft auch die Software "TreeSize", damit kann man die Ordnergröße sehen und Ordner auch nach dieser sortieren.
 
Treesize benutze ich seit Jahren. Ein hervorragendes Programm um zb. die Speicherfresser auf der knapp bemessenen SSD zu finden. ;)
Ergänzung ()

So, ich habe beide Varianten probiert und beides klappt! :p

Das war gleich ne willkommener Anlass mich mal wieder mit Powershell zu beschäftigen.

Danke Leute, ihr habt mir viel Arbeit erspart!
 
Freut mich das es funktioniert :) Keine Ursache!
 
Zurück
Oben