*MIK* 10 Geschrieben 1. Januar 2007 Melden Teilen Geschrieben 1. Januar 2007 Hallo zusammen, ich bin auf der Suche nach einem Script, welches ich beim Herunterfahren von Windows laufen lassen möchte. Dieses Script soll alle drei Tage den Ordner C:\Temp leeren. Leider fehlen mir die nötigen VB Script-Kenntnisse und daher wollte ich mal ganz freundlich anfragen, ob jemand bereits solch ein Script geschrieben hat und mir evtl. erklären könnte wie so etwas funktioniert. Bzw. ob so etwas überhaupt relativ simpel per VB Script zu bewerkstelligen ist. LG Zitieren Link zu diesem Kommentar
maverick82 10 Geschrieben 1. Januar 2007 Melden Teilen Geschrieben 1. Januar 2007 Warum keine Batch-Datei schreiben, die die Dateien löscht, und diese alle 3 Tage per geplantem Task laufen lassen? Zitieren Link zu diesem Kommentar
*MIK* 10 Geschrieben 1. Januar 2007 Autor Melden Teilen Geschrieben 1. Januar 2007 Hmm, mal wieder zu kompliziert gedacht... @echo off del c:\temp\*.* /Q exit Müsste doch reichen oder? Defeniere ich den Task in einer Gruppenrichtlinie? Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 1. Januar 2007 Melden Teilen Geschrieben 1. Januar 2007 Hi, Vernünfitiger kannst du es über forfiles.exe aus dem Reskit definieren. ("Lösche Dateien, die älter als x-Tage sind"). Das lässt du dann taskgesteuert täglich laufen Es gab schon einige Beiträge dazu, such einfach mal nach "forfiles" cu blub Zitieren Link zu diesem Kommentar
olc 18 Geschrieben 2. Januar 2007 Melden Teilen Geschrieben 2. Januar 2007 ...oder Du installierst Dir die PowerShell: http://www.mcseboard.de/windows-forum-allgemein-28/mittels-powershell-dateien-bestimmtem-datum-loeschen-104512.html Gruß olc Zitieren Link zu diesem Kommentar
marka 584 Geschrieben 2. Januar 2007 Melden Teilen Geschrieben 2. Januar 2007 Hallo *MIK*, Vielleicht hilft Dir das folgende Script aus dem Buch Scripting für Administratoren, MSPress 633, weiter. Ich habe es etwas modifiziert. Es löscht alle Dateien im Temp-Ordner, die älter als 2 Tage sind. Zur Sicherheit ist eine vorherige Abfrage eingebaut und es wird standardmäßig ein Testlauf gemacht. Erst das Setzen der Variable testlauf auf false bewirkt den "scharfen" Lauf des Scripts. Erstmal würde ich den Testlauf bevorzugen, das bulklöschaktionen selten gut sind... ' URSPRUNG: ' (C) 2000 by Dr. Tobias Weltner ' MSPress: "Scripting für Administratoren" ' Anpassung 2006 durch Markus Kafurke, www.marka-it.net msg = "Dieses Skript entfernt alle Dateien aus dem TEMP-Ordner, die älter als 2 Tage sind." & vbCr & "Das Script startet zunächst im Testmodus und löscht nicht wirklich." & vbCr & "Setzen Sie in Zeile 20 die Variable 'testlauf' auf 'false', um tatsächlich zu löschen." & vbCr & vbCr & "Script nun starten?" antwort = MsgBox(msg, vbYesNo + vbQuestion,"Sicherheitshinweis:") if antwort = vbNo then abbruchtext ="Script wurde nicht gestartet." & vbCr & "Es wurde nichts gelöscht!" cancelmsg = MsgBox (abbruchtext, vbExclamation, "Abbruch durch Benutzer:") WScript.Quit end if rep_delete = 0 rep_notdelete = 0 rep_error = 0 rep_clean = 0 rep_folder = 0 rep_debug = "" ' dies auf false setzen, wenn wirklich gelöscht werden soll! testlauf = True ' alle TEMP-Dateien löschen, die älter sind als 2 Tage CleanTemp 2 list = "Aufräumaktion TEMP-Ordner:" & vbCr & vbCr list = list & rep_delete & " Dateien gelöscht." & vbCr list = list & rep_notdelete & " Dateien nicht gelöscht, weil sie jünger als das Limit waren." _ & vbCr list = list & rep_error & " Dateien nicht gelöscht, weil Datum nicht ermittelbar." & vbCr list = list & rep_folder & " Ordner gelöscht." & vbCr If rep_clean>0 Then rep_clean = rep_clean / 1024^2 list = list & FormatNumber(rep_clean,1) & " MB Speicherplatz freigegeben." MsgBox list, vbInformation if testlauf=true then WScript.Echo rep_debug Sub CleanTemp(alter) 'SYS: Microsoft (r) Script Runtime Set fs = CreateObject("Scripting.FileSystemObject") ' extrem wichtig: hier wird TEMP-Ordner geöffnet ' und gesamter Inhalt gelöscht. Geben Sie hier den falschen ' Ordner an, dann Katastrophe perfekt! Set temp = fs.GetSpecialFolder(2) ' deshalb zusätzlicher Test: temppath = LCase(temp.Name) If Not (InStr(temppath, "temp")>0 Or InStr(temppath, "tmp")>0) Then MsgBox "ACHTUNG! PRÜFEN SIE, OB DER TEMP-ORDNER ANGEGEBEN WURDE!" WScript.Quit End If DeleteAll temp, alter End Sub Sub DeleteAll(folderobj, alter) For each subfolder in folderobj.SubFolders DeleteAll subfolder, alter Next For each file in folderobj.Files On Error Resume Next datum = file.DateLastModified ok = (Err.number = 0) On Error Goto 0 If ok Then filealter = DateDiff("d", datum, Date) If filealter>alter Then rep_delete = rep_delete + 1 rep_clean = rep_clean + file.Size If testlauf = False Then file.Delete True Else rep_debug = rep_debug & file.Path & vbCr End If Else rep_notdelete = rep_notdelete + 1 End If Else rep_error = rep_error + 1 End If Next If folderobj.Files.Count = 0 And folderobj.SubFolders.Count = 0 Then If testlauf = False Then folderobj.Delete True Else rep_debug = rep_debug & folderobj.Path & vbCr End If rep_folder = rep_folder + 1 End If End Sub Zitieren Link zu diesem Kommentar
*MIK* 10 Geschrieben 2. Januar 2007 Autor Melden Teilen Geschrieben 2. Januar 2007 Wuah, @Marka: Vielen Dank für Deine Bemühung. Das Script werde ich mir auf jeden Fall detailliert angucken und würde gerne noch ein paar Fragen dazu posten, da ich verstehen möchte was da vor sich geht. Wollte mich hier nicht ins gemachte Nest setzen. :D @OLC: Die Powershell hab ich bereits am laufen, welchen Syntax müsste man denn nutzen um dort solch eine Abfrage zu programmieren? Will jetzt nicht das gesamte Script nur nen Denkanstoß da ich wie gesagt verstehen will was da vor sich geht. Danke im Voraus. Zitieren Link zu diesem Kommentar
marka 584 Geschrieben 2. Januar 2007 Melden Teilen Geschrieben 2. Januar 2007 Hey, das stammt auch nicht von mir! Ich habe mir das oben schon erwähnte Buch gekauft, in der Hoffnung, mir den Admin-Alltag etwas vereinfachen zu können. Das Buch ist toll, aber: ohne Scripting-Vorkenntnisse geht es nicht. Die Scripte müssen teilweise noch an die eigenen Umgebungen angepasst werden. Auch ich habe mich, als Scripting-Neuling und Nicht-Scripting-Spezi ehrlich gesagt etwas schwer getan, da die Scripte teilweise recht mager kommentiert und beschrieben sind. Das Buch soll auch kein komplettes VBS-Tutorial sein, sondern nur eine Erweiterung vorhandener Grundkenntnisse darstellen... Aber was ich beantworten kann, beantworte ich gerne. Zitieren Link zu diesem Kommentar
olc 18 Geschrieben 2. Januar 2007 Melden Teilen Geschrieben 2. Januar 2007 @OLC: Die Powershell hab ich bereits am laufen, welchen Syntax müsste man denn nutzen um dort solch eine Abfrage zu programmieren? Will jetzt nicht das gesamte Script nur nen Denkanstoß da ich wie gesagt verstehen will was da vor sich geht. Kein Thema, "das gesamte Script" ist kein Aufwand - da liegt der Vorteil zum VBScript. ;) Get-ChildItem -Path C:\TEMP | Where-Object -FilterScript {($_.LastWriteTime -lt [[DateTime]]::Now - "3")} | Remove-Item -force Gruß olc Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.