Auch Ordner per vbs löschen, Logfile erstellen und per Email versenden
Hallo Forumteilnehmer,
ich habe hier ein Script was mir mal ein Bekannter zusammengebastelt hatte.
Ich selber kann kein VB und wollte deshalb bei euch anfragen, ob ihr mir bitte weiterhelfen könnt.
Beim Script möchte ich gern auch Ordner löschen können statt nur Dateien.
Desweiteren hatte ich mir vorgestellt, dass mir nach erfolgter Löschung ein Logfile erzeugt wird und dieses dann per E-Mail versendet wird.
Mir ist bewusst, dass das Forum dazu dient um zu lernen, aber mir fehlen ja schon die Basics und daher hoffe ich auf eure Mithilfe.
Vielen Dank schonmal.
ich habe hier ein Script was mir mal ein Bekannter zusammengebastelt hatte.
Ich selber kann kein VB und wollte deshalb bei euch anfragen, ob ihr mir bitte weiterhelfen könnt.
Beim Script möchte ich gern auch Ordner löschen können statt nur Dateien.
Desweiteren hatte ich mir vorgestellt, dass mir nach erfolgter Löschung ein Logfile erzeugt wird und dieses dann per E-Mail versendet wird.
Mir ist bewusst, dass das Forum dazu dient um zu lernen, aber mir fehlen ja schon die Basics und daher hoffe ich auf eure Mithilfe.
Vielen Dank schonmal.
'*************************************************************************
'
'Dateien die älter als intTage sind löschen
'
'DateLastModified=Änderungsdatum; DateCreated=Erstellungsdatum
'WScript.Echo intZahl & " Dateien gelöscht." (Ausgabe gelöschter Dateien
'
'*************************************************************************
Set objFSO = CreateObject("Scripting.FileSystemObject")
strOrdner = "D:\" 'Ordnerpfad angeben
strExtension = ""
intTage = 1 'Anzahl der Tage angeben
Set objOrdner = objFSO.GetFolder(strOrdner)
intZahl = 0
For Each objDatei In objOrdner.Files
If LCase(Right(objDatei.name, Len(strExtension))) = LCase(strExtension) _
And DateDiff("d", objDatei.DateLastModified, Now) > intTage Then
objDatei.Delete
intZahl = intZahl + 1
End If
Next
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 162124
Url: https://administrator.de/contentid/162124
Ausgedruckt am: 22.11.2024 um 12:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo anfaenger500!
Um auch Unterordner zu löschen, wäre etwa folgender (ungetesteter) Zusatz erforderlich:
Hier wird nur auf das Alter abgestellt - eine Überprüfung des Namens wäre aber analog zum obigen Ansatz ebenfalls möglich ...
Grüße
bastla
Um auch Unterordner zu löschen, wäre etwa folgender (ungetesteter) Zusatz erforderlich:
For Each objUnterordner In objOrdner.SubFolders
If DateDiff("d", objUnterordner.DateLastModified, Now) > intTage Then
objUnterordner.Delete
intOrdner = intOrdner + 1
End If
Next
WScript.Echo intOrdner & " Ordner gelöscht."
Grüße
bastla
Hallo Anfaenger500!
Versuch es mit der folgenden - um ein wenig Dokumentation erweiterten, aber immer noch ungetesteten - Variante:
Es wird für jeden Unterordner das ermittelte Alter angezeigt ...
Grüße
bastla
Versuch es mit der folgenden - um ein wenig Dokumentation erweiterten, aber immer noch ungetesteten - Variante:
For Each objUnterordner In objOrdner.SubFolders
Doku = Doku & vbCrLf & DateDiff("d", objUnterordner.DateLastModified, Now) & vbTab & objUnterordner.Name
If DateDiff("d", objUnterordner.DateLastModified, Now) > intTage Then
objUnterordner.Delete
intOrdner = intOrdner + 1
End If
Next
WScript.Echo Mid(Doku, 3)
Grüße
bastla
Hallo anfaenger500!
Wenn Du das Script aus der CMD-Shell mit
startest, könntest Du den letzten Teil (ab Zeile 25) auf
ändern und Dir jeweils den zu löschenden Ordner vorweg anzeigen lassen, damit Du erkennen kannst, welcher Ordner (jetzt / von Dir) nicht gelöscht werden kann ...
Grüße
bastla
Ist echt doof, wenn man die Scprache nicht kann.
"Erlaubnis verweigert" (dürfte sich auf die "Lösch"-Zeile, gepostet als Zeile 31, beziehen) bedarf aber doch eigentlich keiner Übersetzung ...Wenn Du das Script aus der CMD-Shell mit
cscript C:\Scriptordner\Scriptname.vbs
For Each objUnterordner In objOrdner.SubFolders
If DateDiff("d", objUnterordner.DateLastModified, Now) > intTage Then
WScript.Echo "Lösche jetzt " & objUnterordner.Name
objUnterordner.Delete
End If
Next
Grüße
bastla
Moin anfaenger500 und bastla,
ich lese diesen Thread auch von Beginn an mit... und immer mit etwas Skepsis.
Ich würde wirklich die zuletzt von bastla geposteten Zeile noch weiter entschärfen durch ein Auskommentieren der Zeile 4, also des .delete-Befehls.
bis wirklich auch klar ist, was denn passieren würde, wenn über den in (ein Skript vorher in Zeile 11) stehenden
Ob das so wirklich der echte Plan ist, da alles zu löschen, was sich seit einem Tag nicht bewegt hat...
Ich halte es für KEINE gute Idee, ein VBS-Löschskript auf dem Rechner zu haben, wenn der Inhalt noch nicht vollständig klar und nachvollziehbar ist.
@anfaenger500:
Das soll keine Abwertung deiner Fähigkeiten sein, aber .... du fängst ja gerade an mit VBS-Krams.
Und Löschen per Skript ist zumindest unter Windows nicht die beste Spielwiese.
Grüße
Biber
ich lese diesen Thread auch von Beginn an mit... und immer mit etwas Skepsis.
Ich würde wirklich die zuletzt von bastla geposteten Zeile noch weiter entschärfen durch ein Auskommentieren der Zeile 4, also des .delete-Befehls.
bis wirklich auch klar ist, was denn passieren würde, wenn über den in (ein Skript vorher in Zeile 11) stehenden
strOrdner = "D:\" 'Ordnerpfad angeben
...drübergewalzt wird.Ob das so wirklich der echte Plan ist, da alles zu löschen, was sich seit einem Tag nicht bewegt hat...
Ich halte es für KEINE gute Idee, ein VBS-Löschskript auf dem Rechner zu haben, wenn der Inhalt noch nicht vollständig klar und nachvollziehbar ist.
@anfaenger500:
Das soll keine Abwertung deiner Fähigkeiten sein, aber .... du fängst ja gerade an mit VBS-Krams.
Und Löschen per Skript ist zumindest unter Windows nicht die beste Spielwiese.
Grüße
Biber
Moin anfaenger500,
meinen ersten Schritt habe ich schon genannt - ich würde -eigentlich immer, noch immerer bei Löschskripten erstmal einen <proof-of-concept mit einer ECHO bzw. WScript.echo-Ausgabe machen, um zu sehen, was passieren würde.
Ich weiss, dass das ein sehr banaler Vorschlag ist, aber denke dennoch, dass er dir durchaus ein paar Probleme vom Hals halten könnte
Grüße
Biber
meinen ersten Schritt habe ich schon genannt - ich würde -eigentlich immer, noch immerer bei Löschskripten erstmal einen <proof-of-concept mit einer ECHO bzw. WScript.echo-Ausgabe machen, um zu sehen, was passieren würde.
Ich weiss, dass das ein sehr banaler Vorschlag ist, aber denke dennoch, dass er dir durchaus ein paar Probleme vom Hals halten könnte
Grüße
Biber