mc-doubleyou

Löschen aller Order in Ordner außer ...

Hallo,

ganz neu auf dem Gebiet bin ich ja nun nicht mehr und insofern hab ich schon einen Schnippsel .. denn dann aber gleich mit Fehler inklusive *gg*

C:\Dokumente und Einstellungen\admin>for /f "delims=Test003" %i in ('dir /b /ad /o-n "C:\temp\Test"') do rd /s /q "C:\temp\Test\Test%i"  

C:\Dokumente und Einstellungen\admin>rd /s /q "C:\temp\Test\Test58941+6"  

C:\Dokumente und Einstellungen\admin>rd /s /q "C:\temp\Test\Test4156"  

C:\Dokumente und Einstellungen\admin>rd /s /q "C:\temp\Test\Test82"  
Das System kann die angegebene Datei nicht finden.

C:\Dokumente und Einstellungen\admin>rd /s /q "C:\temp\Test\Test2"  

C:\Dokumente und Einstellungen\admin>rd /s /q "C:\temp\Test\Test1"  

Kann mir bitte wer sagen warum da der Ordner nicht gefunden werden kann bzw. warum der mir bei diesem Ordner die 3 schluckt, Ordner heißt nämlich Test382

Danke! | Schönes Wochenende!

lg mc-dy
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 156301

Url: https://administrator.de/forum/loeschen-aller-order-in-ordner-ausser-156301.html

Ausgedruckt am: 22.05.2025 um 05:05 Uhr

60730
60730 03.12.2010 um 17:04:03 Uhr
Goto Top
moin,

schau dich mal um - entweder in deiner Dosbox nach for /? oder und hier nach einer sehr aktuellen Anleitung zum Thema Schleifen.

btw:
warum der mir bei diesem Ordner die 3 schluckt
"delims=Test003"
bedeutet - akzeptiere als Trennzeichen
  • T
  • e
  • s
  • t
  • 0
  • 3

Ist also nicht nur völliger Bullshit und weil du eben die 3 als Trennzeichen drin hast....

for /f %i in ('dir /b /ad /o-n "C:\temp\Test"') do rd /s /q "C:\temp\Test\Test%i"

Gruß
bastla
bastla 03.12.2010 um 18:20:27 Uhr
Goto Top
Hallo mc-doubleyou!

Das Mysterium hinsichtlich "Test382" hat T-Mo ja schon geklärt - wenn ich nun noch vermute, dass mit "Test003" jener (einzelne) Ordner gemeint ist, der nicht gelöscht werden soll, würde ich zu folgender Vorgangsweise raten:
for /f "delims=" %i in ('dir /b /ad "C:\temp\Test"^|findstr /x /i /v /c:"Test003"') do @echo rd /s /q "C:\temp\Test\%i"
Das "@echo" nur, damit beim Testen nix Schlimmes passiert, und das "/c:", falls Du (oder ein Leser dieses Threads) die Nummer mal für einen Ordner mit im Namen enthaltenem Leerzeichen abziehen will(st) ...

... und falls der Ordnername nur mit "Test003" beginnen muss, einfach "/b" anstelle von "/x" ...

Grüße
bastla
mc-doubleyou
mc-doubleyou 06.12.2010 um 09:43:37 Uhr
Goto Top
Hallo bastla,

klappt perfekt, Danke!

Kannst mir vl bitte auch erklären was was heißt und warum das nun klappt?

Danke!

lg mc-dy
bastla
bastla 06.12.2010 um 14:24:44 Uhr
Goto Top
Hallo mc-doubleyou!

Teile davon kennst Du ja schon, aber der Vollständigkeit halber:
for /f "delims=" %i in
Gehe die Ergebnisse (siehe nächsten Teil) zeilenweise durch und zerlege die Zeilen nicht in Einzelteile ("delims=" legt fest, dass es kein - also auch nicht die defaultmäßigen Leerzeichen und TAB - Trennzeichen geben soll, anhand dessen die Zerlegung erfolgen könnte)
('dir /b /ad "C:\temp\Test"
Liste alle Ordner (directories, daher "/ad") von "C:\temp\Test" auf und gebe nur den Namen (nicht auch zB Datum, ...) aus, ...
^|findstr /x /i /v /c:"Test003"')
... filtere aber das Ergebnis vor der Weiterverarbeitung noch so, dass nur alle gesamten ("/x") Zeilen ohne Berücksichtigung von Groß/Kleinschreibung ("/i"), welche nicht ("/v") "Test003" lauten (mit "/c:" wird nur für den Fall vorgesorgt, dass einmal im Suchbegriff Leerzeichen vorhanden wären), übrig bleiben
do @echo rd /s /q "C:\temp\Test\%i"
und lösche die jeweiligen Ordner kommentarlos ("/q") samt allen enthaltenen Dateien / Unterordnern ("/s") - da in "%i" nur der Ordnername enthalten ist, muss hier auch nochmals der Pfad "C:\temp\Test" angegeben werden.

Grüße
bastla