kalle10000 10 Geschrieben 5. September 2007 Melden Teilen Geschrieben 5. September 2007 Hallo, hat jemand ein vbs-Skript, dass alle Dateien angenommen von Laufwerk C:, die älter als eine Woche alt sind, irgendwohin verschiebt? Danke im Voraus Gruss Kalle Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 5. September 2007 Melden Teilen Geschrieben 5. September 2007 Hab eins, dass Dateien, die älter als X Stunden sind, verschiebt. Kann man aber leicht anpassen, denke ich ;) 'Script verschiebt alle Dateien, die älter als lng_timelag Stunden sind, von str_source nach str_dest Dim fso, folder str_source = "F:\archive_queue\" str_dest = "F:\archive\" lng_timelag = 5 'Zeit in Stunden Set fso = CreateObject("scripting.FileSystemObject") Set folder=fso.GetFolder(str_source) for each file in folder.Files if (Now()-file.datelastmodified)*24 > lng_timelag then fso.MoveFile file.Path, str_dest end if next Zitieren Link zu diesem Kommentar
marka 584 Geschrieben 5. September 2007 Melden Teilen Geschrieben 5. September 2007 Vorsicht mit automatischen Löschaktionen!!! Ich habe hier ein Script aus dem Buch "Scripting für Administratoren" von Dr. Tobias Weltner, welches ich leicht modifiziert habe. Das Script löscht alle Dateien im Tempverzeichnis, die älter als 2 Tage sind. Code folgt, Datei ist angehängt, Dateinamenserweiterung ".txt" entfernen... ' (C) 2000 by Dr. Tobias Weltner ' MSPress: "Scripting für Administratoren" ' modified by M.Kafurke 'WICHTIGER HINWEIS: 'Das Abändern des Pfades für den zu löschenden Ordner kann Katastrophale Datenverluste auslösen! 'Insbesondere auf C:\ sollte man NIEMALS automatisierte Löschungen vornehmen. 'Wenn z.B. die Datei NTLDR älteren Datums ist, wird diese automatisch gelöscht, 'ebenso boot.ini und weitere wichtige Systemdateien!!! msg = "Kurzbeschreibung:" & vbCr & "Dieses Skript entfernt alle Dateien aus dem TEMP-Verzeichnis, die älter als 2 Tage sind."&vbcr&"Das Skript startet erst im Testmodus und löscht nicht wirklich."&vbcr&"Erst wenn Sie die Variable testlauf=false setzen, wird tatsächlich gelöscht." & vbCr & vbCr & "Beachten Sie, dass automatische Löschaktionen katastrophale Folgen haben können" & vbcr & vbcr & "Wollen Sie das Skript jetzt ausführen?" antwort = MsgBox(msg, vbYesNo + vbQuestion,"Script ausführen?") if antwort = vbNo then MsgBox "Abbruch durch Benutzer...", vbExclamation, "Abbruch!" 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 Delete_Tempfiles_older_then_2_Days.vbs.txt Zitieren Link zu diesem Kommentar
kalle10000 10 Geschrieben 5. September 2007 Autor Melden Teilen Geschrieben 5. September 2007 Besten Dank, ich werde mir das gleich mal in Ruhe ansehen. Das Skript ist hier auch für das Temp-Laufwerk gedacht. Gruss Kalle Zitieren Link zu diesem Kommentar
marka 584 Geschrieben 5. September 2007 Melden Teilen Geschrieben 5. September 2007 Na, dann passt es ja... :D Zitieren Link zu diesem Kommentar
GuentherH 61 Geschrieben 5. September 2007 Melden Teilen Geschrieben 5. September 2007 Hi. ... oder Script ersparen und mit Robocopy lösen. LG Günther Zitieren Link zu diesem Kommentar
Kafuhn 10 Geschrieben 5. September 2007 Melden Teilen Geschrieben 5. September 2007 Hallo, ich würd auch robocopy empfehlen, gibt auch ne gui zu :) MfG Frank Zitieren Link zu diesem Kommentar
grizzly999 11 Geschrieben 5. September 2007 Melden Teilen Geschrieben 5. September 2007 Ich nehme für sowas gerne forfiles.exe aus dem ResourceKit (bie 2003 schon so dabei). Ist halt kein VB-Skript, aber einfach zu bedienen ;) grizzly999 Zitieren Link zu diesem Kommentar
waggal 10 Geschrieben 11. September 2007 Melden Teilen Geschrieben 11. September 2007 hi leute, bin leider kein guter vbscriptler :-( wie muss ich dieses script abändern, damit: - alle dateien die älter als 30 tage sind gelöscht werden? - anstelle von %TEMP% würde ich gerne die ordner C:\TEMP1 und C:\TEMP2 durchsuchen - unterordner sollten nicht gelöscht werden, lediglich deren inhalt vielen dank für eure hilfe! waggal Zitieren Link zu diesem Kommentar
marka 584 Geschrieben 11. September 2007 Melden Teilen Geschrieben 11. September 2007 hi leute, bin leider kein guter vbscriptler :-( wie muss ich dieses script abändern, damit: - alle dateien die älter als 30 tage sind gelöscht werden? - anstelle von %TEMP% würde ich gerne die ordner C:\TEMP1 und C:\TEMP2 durchsuchen - unterordner sollten nicht gelöscht werden, lediglich deren inhalt vielen dank für eure hilfe! waggal --> cleantemp 2 abändern in cleantemp 30 --> Set temp = fs.GetSpecialFolder(2) abändern in Set temp = C:\TEMP1 (bzw C:\TEMP2) --> Weiß ich auf die Schnelle auch nicht... Zitieren Link zu diesem Kommentar
waggal 10 Geschrieben 11. September 2007 Melden Teilen Geschrieben 11. September 2007 danke! kann ich acuh 2 pfade angeben? oder muss ich für jeden pfad ein eigenes script schreiben? lg Zitieren Link zu diesem Kommentar
marka 584 Geschrieben 11. September 2007 Melden Teilen Geschrieben 11. September 2007 Ich würde den Löschteil des Scriptes zweimal einbinden, und vor dem zweiten Lauf den Pfad ändern. 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.