[Batch] Bestimmte Ordner+Inhalt aus Verzeichniss löschen

TorC

Grünschnabel
Hallo,
ich habe da ein (wie ich Hoffe) kleines Problem:
Ich möchte nach dem Neustart unserer Terminalserver ein Script ausführen,
welches mir unter "C:\Dokumente und Einstellungen" alle Ordner, bis auf "All Users", "Default User", "LocalService", "NetworkService" und "citrixdb1", löscht.

Ich dachte mir man könnte eine Liste der Ordner erstellen alla:
Code:
@echo off    
dir /b "c:\Dokumente und Einstellungen" > c:\liste.txt
Und dann mit einer Schleife die Liste abarbeiten und die genannten Ordner ausschließen...

Leider Gottes bin ich noch etwas wissensbefreit in dem Bereich
- vielleicht hat ja einer von Euch schon mal etwas ähnlich gemacht
bzw. weiß aus dem FF wie man so eine Schleife baut
und kann mir nun aushelfen
Vielleicht denke ich ja auch etwas verquer und es gibt ne andere "einfache" Lösung dafür...

MfG
Torben
 
Hallo!

Schau mal hier:
Code:
C:\Temp>dir
 Datenträger in Laufwerk C: hat keine Bezeichnung.
 Datenträgernummer: C8EE-C803

 Verzeichnis von C:\Temp

10.02.2005  20:58       <DIR>          .
10.02.2005  20:58       <DIR>          ..
10.02.2005  20:57       <DIR>          a
10.02.2005  20:37       <DIR>          All Users
10.02.2005  20:57       <DIR>          b
10.02.2005  20:57       <DIR>          c
10.02.2005  20:41       <DIR>          citrixdb1
10.02.2005  20:57       <DIR>          d
10.02.2005  20:41       <DIR>          Default User
10.02.2005  20:56                1.012 DelAction.vbs
10.02.2005  20:57       <DIR>          e
10.02.2005  20:41       <DIR>          LocalService
10.02.2005  20:41       <DIR>          NetworkService
               1 Datei(en)          1.012 Bytes
              12 Verzeichnis(se),   1.390.243.840 Bytes frei

C:\Temp>cscript .\DelAction.vbs c:\temp
Microsoft (R) Windows Script Host, Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. Alle Rechte vorbehalten.

L"sche Verzeichnis: a
L"sche Verzeichnis: b
L"sche Verzeichnis: c
L"sche Verzeichnis: d
L"sche Verzeichnis: e

C:\Temp>dir
 Datenträger in Laufwerk C: hat keine Bezeichnung.
 Datenträgernummer: C8EE-C803

 Verzeichnis von C:\Temp

10.02.2005  20:58       <DIR>          .
10.02.2005  20:58       <DIR>          ..
10.02.2005  20:37       <DIR>          All Users
10.02.2005  20:41       <DIR>          citrixdb1
10.02.2005  20:41       <DIR>          Default User
10.02.2005  20:56                1.012 DelAction.vbs
10.02.2005  20:41       <DIR>          LocalService
10.02.2005  20:41       <DIR>          NetworkService
               1 Datei(en)          1.012 Bytes
               7 Verzeichnis(se),   1.390.243.840 Bytes frei

C:\Temp>

DelAction.vbs:
Code:
Dim fs, basePath, baseFolder, subFolder,name, delete
if wscript.arguments.length = 0 then
   wscript.Echo "Pfandangabe notwendig!"
   wscript.Echo "Beispiel:"
   wscript.Echo "cscript DelAction.wsh c:\test"
   wscript.quit
End If

basePath = wscript.arguments(0)

Set fs = CreateObject("Scripting.FileSystemObject")
Set baseFolder = fs.GetFolder(basePath)
For Each subFolder In baseFolder.SubFolders
   '"All Users", "Default User", "LocalService", "NetworkService" und "citrixdb1"
   name = subFolder.name
   Delete = True
   If UCase(name) = UCase("All Users") Then
      Delete = False
   ElseIf UCase(name) = UCase("Default User") Then
      Delete = False
   ElseIf UCase(name) = UCase("LocalService") Then
      Delete = False
   ElseIf UCase(name) = UCase("NetworkService") Then
      Delete = False
   ElseIf UCase(name) = UCase("citrixdb1") Then
      Delete = False
   End If
   If Delete Then
      wscript.Echo "L”sche Verzeichnis: " & subFolder.name
      subFolder.Delete True
   End If
Next
Set fs = Nothing

HTH,
Gruß Tom
 
Zuletzt bearbeitet:
Ja wiel geil ist denn das
- ich könnte Dich knutschen, wenn Du eine Frau wärst.
DANKE!
- ich könnte quitschen vor Freude, echt!

Ich habe mittlerweile folgendes im Angebot,
wobei mir n VB-Script viel besser gefällt ;)
(Haste nen Buchtip? Muss mich da mal reinknien ;) )

Zwei Batch Dateien:
Code:
@echo off
for /D %%i in (*) do call checkdel.cmd "%%i"
2.te
Code:
@REM abbrechen wenn dies eine datei ist, die wir nicht löschen wollen
@if /I %1=="All Users" goto :EOF
@if /I %1=="Default User" goto :EOF
@if /I %1=="LocalService" goto :EOF
@if /I %1=="NetworkService" goto :EOF
@if /I %1=="citrixdb1" goto :EOF
echo deleting %1
del %1

Viele Wege führen nach Rom :D

Nochmals vielen Dank für Deine Mühe (mein Held)
- das Script wird seine Dienste bis in alle Ewigkeit leisten
und damit so manche Probleme beseitigen...thx

MfG
Torben
 
Zuletzt bearbeitet:
Zurück