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

Frage Entwicklung

Mitglied: anfaenger500

anfaenger500 (Level 1) - Jetzt verbinden

06.03.2011 um 19:36 Uhr, 5724 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
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 22 StundenBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 1 TagHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 1 TagMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 1 TagSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...

Windows Server
Windows Store Apps
gelöst Frage von PeterleBWindows Server10 Kommentare

Gibt es einen Weg, auf Windows Server 2016 Windows Store Apps wie zum Beispiel die HP Smart App zu ...

Microsoft
Erfahrungen mit Webcam over RDP gesucht
Frage von DerWoWussteMicrosoft10 Kommentare

Moin Kollegen. Bekanntlich kann man Webcams nur mit Drittanbietersoftware in RDP reinschleifen. Was nutzt Ihr dazu? Wie stabil funktioniert ...