mike0185
Goto Top

Per Batch alles löschen, allerdings 2 Ordner ausschließen

Hallo Zusammen,

für Euch sicher eine leichtigkeit... Ich brauche ein Batch, das in einem Ordner alle Dateien und Unterordner löscht, egal was hier reingespeichert wird und wie diese benannt sind. Das Skript soll aber 2 Unterordner die auch hier liegen ignorieren.

Hab Ihr ein Lösungsansatz für mich. Über die Sufu konnte ich nur Ansätze finden, die nach Datum oder alter von Dateien löschen.


Vielen Dank Euch!

Content-ID: 169479

Url: https://administrator.de/contentid/169479

Ausgedruckt am: 22.11.2024 um 17:11 Uhr

Skyemugen
Skyemugen 11.07.2011 um 12:14:38 Uhr
Goto Top
Aloha,

so ganz kristallklar ist mir das jetzt nicht, sind die beiden Verzeichnisse Unterordner des Stammverzeichnisses von dem du ausgehst, oder noch eine (oder mehrere Ebenen tiefer) sprich:

Angenommen wir gehen von wqeqw aus, ist der dann dort:
E:\SKRIPTE\NEUER ORDNER
└───wqeqw
    └───Neuer Ordner
└───Neuer Ordner
    └───grabbel
oder dort
E:\SKRIPTE\NEUER ORDNER
└───Neuer Ordner
    └───wqeqw
└───Neuer Ordner 2
    └───grabbel
? Denn das macht einen deutlichen Unterschied im Skript, das eine wäre easygoing, das andere wäre umständlicher, weil man nicht das übergeordnete Verzeichnis des gesuchten Verzeichnisses löschen darf.

greetz André
Friemler
Friemler 11.07.2011 um 12:19:45 Uhr
Goto Top
Hallo Mike0185,

ich mache hier mal einen Vorschlag für den Easy-Going-Fall face-wink:
@echo off & setlocal

set "SrcDir=E:\Test"  
set "Exclude="Der erste" "Der zweite""  

del /q "%SrcDir%\*.*" 2>NUL  

set "DoNotDelete="  

for /f "delims=" %%d in ('dir /b /a:d "%SrcDir%"') do (  
  for %%e in (%Exclude%) do (
    if "%%d" equ "%%~e" set "DoNotDelete=1"  
  )

  if not defined DoNotDelete rd /s /q "%SrcDir%\%%d"  
  set "DoNotDelete="  
)

Die Variablen in Zeile 3 und 4 musst Du anpassen. Falls die auszunehmenden Verzeichnisse Leerzeichen im Namen enthalten, musst Du sie so wie im Beispiel in Zeile 4 in Anführungszeichen setzen.

Gruß
Friemler
Skyemugen
Skyemugen 11.07.2011 um 12:27:18 Uhr
Goto Top
Aloha Friemler,

also eines stört mich:

Du löschst keine Dateien im Ausgangsverzeichnis (ist doch gewollt oder nicht: Dateien und Unterordner) face-wink


greetz André
Friemler
Friemler 11.07.2011 um 12:29:14 Uhr
Goto Top
Hey André,

hmm (auf die Uhr schau'), bist Du schon wach? face-wink

Schau mal in Zeile 6....

Gruß
Friemler
Skyemugen
Skyemugen 11.07.2011 um 12:35:14 Uhr
Goto Top
Aloha Friemler,

hmm ... gab zu wenig zum Frühstück, Mittag ist erst in 30 Minuten ... heute ist Montag und es ist dauergrau, reicht das als Ausrede, Zeile 6 komplett ausgeblendet zu haben? face-wink

greetz André

edit: Aber mal die Frage: Warum arbeitest du nicht einfach mit findstr /v /e /c? Wäre meine Umsetzung gewesen face-wink
Friemler
Friemler 11.07.2011 um 12:41:03 Uhr
Goto Top
Hi André,

ist genehmigt face-wink .

Bei Euch ist es grau? Schade, hier in Rhein-Main lacht die Sonne face-smile .

Grüße
Friemler
Friemler
Friemler 11.07.2011 um 12:51:27 Uhr
Goto Top
Hi André,

Zitat von @Skyemugen:
Warum arbeitest du nicht einfach mit findstr /v /e /c? Wäre meine Umsetzung gewesen face-wink

weil man beim Parameter /c: nur einen Suchbegriff angeben kann. Damit wäre dann auch wieder eine extra Schleife erforderlich, um auf alle Ausnahmen zu prüfen. Die Verzeichnisse ohne /c: angeben geht auch nicht, da die Verzeichnisnamen Leerzeichen enthalten könnten und somit die beiden Teile als zwei Namen aufgefasst würden.

Gruß
Friemler
Mike0185
Mike0185 11.07.2011 um 12:53:07 Uhr
Goto Top
Hey!

Super vielen Dank schon mal!

Ist Easy-Going.... Hab ein Hauptverzeichnis z.B.: C:\Test unter diesem liegen 2 Ordner C:\Test\notdel1 und C:\Test\notdel2. notdel1 und notdel2 sollen ausgeschlossen werden. Sonstiger Inhalt in C:\Test\ muss gelöscht werden.

face-smile
Skyemugen
Skyemugen 11.07.2011 um 12:57:06 Uhr
Goto Top
Aloha Friemler ...

aber ...
for /f "delims=" %%s in ('dir /b /s /ad "E:\Skripte\Neuer Ordner" ^|findstr /v /i /e /c:"Ordner 1" ^|findstr /v /i /e /c:"Ordner 2"') do rd "%%s"
oder nicht? ...

greetz André

P.S.: Wenn was ist, ich bin essen *fg*
Mike0185
Mike0185 11.07.2011 um 12:58:07 Uhr
Goto Top
Das Skript funktioniert super!

Vielen Dank genau sowas habe ich gesucht! DANKE @Friemler
Friemler
Friemler 11.07.2011 um 13:04:15 Uhr
Goto Top
Hey André,

joa, aber nur um auf einen Oneliner zu kommen so einen Bandwurm? Und wenn der TO vielleicht mal 3 oder 4 Verzeichnisse ausschließen will, ist jedesmal ein neuer FINDSTR-Abschnitt erforderlich - der Bandwurm wird länger. Ich denke, meine Lösung ist am einfachsten anpassbar.

Guten Appetit
Friemler
Friemler
Friemler 11.07.2011 um 13:05:30 Uhr
Goto Top
Hallo Mike,

gern geschehen. Aber markiere den Beitrag auch bitte noch als gelöst.

Gruß
Friemler
Skyemugen
Skyemugen 11.07.2011 um 15:22:26 Uhr
Goto Top
Aloha Friemler,

der Bandwurm kommt natürlich wieder nur, weil da zu viel Überflüssiges steht ... ^|findstr /v /i /e /c:"Ordner 1" /c:"Ordner 2" sollte es ja auch tun face-wink

Wobei /e ja auch wegfallen kann, der war noch drin, weil es von einem dir ohne /ad ausging ^_^ aber del weigert sich ja doch, Verzeichnisse zu löschen, har har

greetz André