meiseed
Goto Top

Brauche ein script zum löschen von ordner

Hi zusammen

ich brauche eure hilfe bei einem script

hier das script
'************************************************************  
'   
' Löscht alle Dateien, die seit einem bestimmten Datum  
' nicht mehr geändert wurden  
'  
'************************************************************  

Set fso = CreateObject("Scripting.FileSystemObject")  
Set WSHShell = WScript.CreateObject("WScript.Shell")  
On Error Resume Next


'******* hier eigenen Bedürfnissen anpassen *****************  

dim Verzeichnis(2)
Verzeichnis(0) = "C:\Dokumente und Einstellungen\eub\Lokale Einstellungen\Temp"  
Verzeichnis(1) = "C:\Dokumente und Einstellungen\eub\Lokale Einstellungen\Temporary Internet Files"  
Verzeichnis(2) = "C:\Dokumente und Einstellungen\eub\Lokale Einstellungen\Verlauf"  

Aufheben    = 14 'Anzahl der Tage  

'********Ende der Anpassungen********************************  


for n=0 to 2
	Set ordner = fso.GetFolder(Verzeichnis(n))
	heute = Date()
	DeleteInFolder(ordner)
next

Sub DeleteInFolder(ordner)
	Set dateien = ordner.Files
	' Alle Dateien in diesem Ordner abklappern  
	For Each datei In dateien
	  If datei.DateLastModified < (heute - Aufheben) Then
	    on error resume next
	     datei.delete
             if err and err<>70 then msgbox "Unerwarteter Fehler (Code="&err&")",16 : wscript.quit  
             on error goto 0
	  End If
	Next
	Set untere = ordner.SubFolders
	'Unterordner abklappern, DeleteInFolder rekursiv aufrufen  
	For Each unter In untere
	  DeleteInFolder(unter)
	Next
End Sub

mit dem script kann ich die dateien die älter als xy sind aus einem ordner und seinen unterordner löschen
aber die unterorder bleiben dann leer da.
meine frage ist wie kann ich es machen das auch die ordner gelöscht werden die keine dateien mehr haben.

Content-ID: 62318

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

Ausgedruckt am: 26.11.2024 um 01:11 Uhr

bastla
bastla 26.06.2007 um 11:03:16 Uhr
Goto Top
Hallo MeiSeed und willkommen im Forum!

Du könntest nach dem rekursiven Aufruf von "DeleteInFolder" den Inhalt des eben behandelten Ordners überprüfen.

Anmerkung: Da Du übrigens "untere" anderweitig ohnehin nicht benötigst, wäre auch die direkte Verwendung der "SubFolders"-Aufzählung möglich.

Daraus ergäbe sich etwa folgender Code:
    ...
    Next
    'Unterordner abklappern, DeleteInFolder rekursiv aufrufen  
    For Each unter In <b>ordner.SubFolders</b>
       DeleteInFolder(unter)
<b>	   If (unter.SubFolders.Count + unter.Files.Count) = 0 Then
	       unter.Delete
	   End If</b>
    Next
End Sub

Grüße
bastla
MeiSeed
MeiSeed 26.06.2007 um 12:25:15 Uhr
Goto Top
Dake für das wilkommen

und danke für die schnelle antwort hat alles prima geklappt

grüße
MeiSeed