Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Auch Ordner per vbs löschen, Logfile erstellen und per Email versenden

Mitglied: anfaenger500

anfaenger500 (Level 1) - Jetzt verbinden

06.03.2011 um 19:36 Uhr, 5741 Aufrufe, 8 Kommentare

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.

01.
 
02.
'************************************************************************* 
03.
'  
04.
'Dateien die älter als intTage sind löschen 
05.
06.
'DateLastModified=Änderungsdatum; DateCreated=Erstellungsdatum 
07.
'WScript.Echo intZahl & " Dateien gelöscht." (Ausgabe gelöschter Dateien 
08.
09.
'************************************************************************* 
10.
 
11.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
12.
strOrdner = "D:\"			'Ordnerpfad angeben 
13.
strExtension = ""	 
14.
intTage = 1				'Anzahl der Tage angeben 
15.
 
16.
Set objOrdner = objFSO.GetFolder(strOrdner) 
17.
intZahl = 0 
18.
For Each objDatei In objOrdner.Files 
19.
    If LCase(Right(objDatei.name, Len(strExtension))) = LCase(strExtension) _  
20.
        And DateDiff("d", objDatei.DateLastModified, Now) > intTage Then 
21.
        objDatei.Delete 
22.
        intZahl = intZahl + 1 
23.
    End If 
24.
Next
Mitglied: bastla
06.03.2011 um 20:27 Uhr
Hallo anfaenger500!

Um auch Unterordner zu löschen, wäre etwa folgender (ungetesteter) Zusatz erforderlich:
01.
For Each objUnterordner In objOrdner.SubFolders 
02.
    If DateDiff("d", objUnterordner.DateLastModified, Now) > intTage Then 
03.
        objUnterordner.Delete 
04.
        intOrdner = intOrdner + 1 
05.
    End If 
06.
Next 
07.
WScript.Echo intOrdner & " Ordner gelöscht."
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
Bitte warten ..
Mitglied: anfaenger500
07.03.2011 um 22:53 Uhr
Hallo bastla,

habe den Code man angepasst und ausgeführt.

Nur leider passiert da gar nichts.

Könntest du mir bitte nochmal helfen!

Danke und Gruß

01.
'************************************************************************* 
02.
'  
03.
'Dateien die älter als intTage sind löschen 
04.
05.
'DateLastModified=Änderungsdatum; DateCreated=Erstellungsdatum 
06.
'WScript.Echo intZahl & " Dateien gelöscht." (Ausgabe gelöschter Dateien 
07.
08.
'************************************************************************* 
09.
 
10.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
11.
strOrdner = "C:\Sicherungsordner"			'Ordnerpfad angeben 
12.
strExtension = ""	 
13.
intTage = 1				'Anzahl der Tage angeben 
14.
 
15.
Set objOrdner = objFSO.GetFolder(strOrdner) 
16.
intZahl = 0 
17.
For Each objDatei In objOrdner.Files 
18.
    If LCase(Right(objDatei.name, Len(strExtension))) = LCase(strExtension) _  
19.
        And DateDiff("d", objDatei.DateLastModified, Now) > intTage Then 
20.
        objDatei.Delete 
21.
        intZahl = intZahl + 1 
22.
    End If 
23.
Next 
24.
  
25.
For Each objUnterordner In objOrdner.SubFolders  
26.
    If DateDiff("d", objUnterordner.DateLastModified, Now) > intTage Then  
27.
    	objUnterordner.Delete  
28.
    	intOrdner = intOrdner + 1  
29.
    End If  
30.
Next 
Bitte warten ..
Mitglied: bastla
08.03.2011 um 07:41 Uhr
Hallo Anfaenger500!

Versuch es mit der folgenden - um ein wenig Dokumentation erweiterten, aber immer noch ungetesteten - Variante:
01.
For Each objUnterordner In objOrdner.SubFolders 
02.
    Doku = Doku & vbCrLf & DateDiff("d", objUnterordner.DateLastModified, Now) & vbTab & objUnterordner.Name 
03.
    If DateDiff("d", objUnterordner.DateLastModified, Now) > intTage Then 
04.
    	objUnterordner.Delete 
05.
    	intOrdner = intOrdner + 1 
06.
    End If 
07.
Next 
08.
WScript.Echo Mid(Doku, 3)
Es wird für jeden Unterordner das ermittelte Alter angezeigt ...

Grüße
bastla
Bitte warten ..
Mitglied: anfaenger500
08.03.2011 um 17:44 Uhr
Hallo bastla,

habe das Script wie folgt erweitert:

01.
'************************************************************************* 
02.
'  
03.
'Dateien die älter als intTage sind löschen 
04.
05.
'DateLastModified=Änderungsdatum; DateCreated=Erstellungsdatum 
06.
'WScript.Echo intZahl & " Dateien gelöscht." (Ausgabe gelöschter Dateien) 
07.
08.
'************************************************************************* 
09.
 
10.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
11.
strOrdner = "D:\"			'Ordnerpfad angeben 
12.
strExtension = ""	 
13.
intTage = 1				'Anzahl der Tage angeben 
14.
 
15.
Set objOrdner = objFSO.GetFolder(strOrdner) 
16.
intZahl = 0 
17.
For Each objDatei In objOrdner.Files 
18.
    If LCase(Right(objDatei.name, Len(strExtension))) = LCase(strExtension) _  
19.
        And DateDiff("d", objDatei.DateLastModified, Now) > intTage Then 
20.
        objDatei.Delete 
21.
        intZahl = intZahl + 1 
22.
    End If 
23.
Next 
24.
 
25.
For Each objUnterordner In objOrdner.SubFolders  
26.
 
27.
    Doku = Doku & vbCrLf & DateDiff("d", objUnterordner.DateLastModified, Now) & vbTab & objUnterordner.Name  
28.
 
29.
    If DateDiff("d", objUnterordner.DateLastModified, Now) > intTage Then  
30.
 
31.
       objUnterordner.Delete  
32.
 
33.
       intOrdner = intOrdner + 1  
34.
 
35.
    End If  
36.
 
37.
Next  
38.
 
39.
WScript.Echo Mid(Doku, 3)
Nur leider bekomme ich da folgende Fehlermeldung:

Kann leider keine Bilder hochladen, daher schreibe ich es mal so ab.
Zeile: 32
Zeichen: 8
Fehler: Erlaubnis verweigert
Code: 800A0046
Quelle: Laufzeitfehler in Microsoft VBScript

Ist echt doof, wenn man die Scprache nicht kann.

Danke und Gruß
Bitte warten ..
Mitglied: bastla
08.03.2011 um 17:55 Uhr
Hallo anfaenger500!
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
startest, könntest Du den letzten Teil (ab Zeile 25) auf
01.
For Each objUnterordner In objOrdner.SubFolders  
02.
    If DateDiff("d", objUnterordner.DateLastModified, Now) > intTage Then  
03.
        WScript.Echo "Lösche jetzt " & objUnterordner.Name 
04.
        objUnterordner.Delete  
05.
    End If  
06.
Next 
ä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
Bitte warten ..
Mitglied: Biber
08.03.2011 um 18:59 Uhr
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
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
Bitte warten ..
Mitglied: anfaenger500
09.03.2011 um 23:13 Uhr
Hallo Biber,

vielen Dank für deinen Beitrag, aber wie würdest du folgende Anforderung lösen?

Das ganze soll automatisch und nachts vollzogen werden.

Alle Backups und D:\ sollen nach voreingestellter Zeitangabe (Tage) gelöscht werden, damit mir die Platte nicht vollläuft.

Bin wirklich für alle Vorschläge offen. Nur so kann man effektiv dazuz lernen.

Danke und Grüße
Bitte warten ..
Mitglied: Biber
10.03.2011 um 08:50 Uhr
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
Bitte warten ..
Ähnliche Inhalte
Entwicklung
Vbs - Email versenden mit pdf-Anhang?
gelöst Frage von BenJo64Entwicklung2 Kommentare

Hallo, ich verzweifele gerade an folgendem Problem: Ich versuche von einem Microsoft Windows Server 2003 aus eine pdf als ...

VB for Applications

VBS Ordner erstellen - wenn nicht vorhanden!

gelöst Frage von freshman2017VB for Applications1 Kommentar

Hallo, ich würde gerne einen Ordner erstellen, wenn dieser nicht vorhanden ist, nachfolgende VBS funktioniert Ich würde jedoch mit ...

Windows Server

Logfiles für GPO Installationen erstellen

gelöst Frage von lordofremixesWindows Server1 Kommentar

Hallo zusammen, nach langem Hin und Her habe ich jetzt die komplette Softwareinstallation auf einem Windows Server 2012R2 per ...

Batch & Shell

Logfiles zippen, verschieben, löschen

gelöst Frage von tomscorerBatch & Shell6 Kommentare

Hallo liebe Community. Ich habe mich nun schon etwas im Forum umgesehen, aber irgendwie funktioniert mein Batch nicht so ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 2 TagenWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 2 TagenAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 3 TagenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 3 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Router & Routing
Router auf Orginal Firmware zurück flashen mit Tftpd
Frage von ILeonardRouter & Routing21 Kommentare

Hallo, Ich habe zwei Router, einmal TP-Link 841n v11 und TP-Link 940N v5. Ich wollte fragen, ob jemand mir ...

Router & Routing
WRT keine Verbindung zum Web Interface
gelöst Frage von ILeonardRouter & Routing18 Kommentare

Hallo, Ich habe einen TP-Link WR841n mit wrt geflasht, das Problem ist ich kann mich mit 192.168.1.1 nicht verbinden. ...

TK-Netze & Geräte
Telefonie zweier Fritzboxen mit je eigenem DSL Anschluss verbinden
Frage von hannsgmaulwurfTK-Netze & Geräte10 Kommentare

Hallo zusammen, ich habe hier einen Haushalt mit zwei Anschlüssen. Einmal ISDN, einmal DSL. An jedem Anschluss hängt eine ...

Windows Server
Standortvernetzung zu einem Strato VServer (Windows)
Frage von matzefratze81Windows Server10 Kommentare

Moin, ich komme aus einem Enterprise-Umfeld und habe den Fehler gemacht, dass ich mich auf ein kleines Unternehmen eingelassen ...