 |  | | | | | | | | |  |  | | | | | Fortgeschrittener Benutzer
Status: Offline Beiträge: 135 Registriert seit: 12.10.2004 Ort: Zürich Alter: 23 | VBS zum Archivieren von Dateien -
06.11.2007, 08:25
Kann mir jemand weiter helfen? Ich suche ein vbs script welches mir Dateien in einem Ordner die älter als x Monate sind, archiviert und das archiv wegkopiert. Die archivierten Dateien die ja jetzt nicht mehr benötigt werden, sollten auch noch gelöscht werden. 124 dezentrale Dominoserver 6.5.1 auf W2k3
4600 Clients (auch 6.5.1, D/F/I), davon ca. 350 DWA-User | | | | | Links zum gleichem Thema: | | | | | | | Fortgeschrittener Benutzer
Status: Offline Beiträge: 135 Registriert seit: 12.10.2004 Ort: Zürich Alter: 23 | AW: VBS zum Archivieren von Dateien -
07.11.2007, 14:19
Gehe nun einen anderen Lösungsweg, ich werde das Programmieren nun in Teil Schritte erledigen.
Zuerst möchte ich in zwei Verzeichnis und deren Unterverzeichnise alle Files suchen, deren Erstellungsdatum älter als 2 Jahre sind. Die Namen der Dateien die älter als 2 Jahre sind, sollen danach in eine txt Datei geschrieben werden inkl dem Erstellungsdatum.
Zum Testen des Scripts suche ich nur nach Files deren Erstellungsdatum älter als 5 Stunden ist.
Ich hab den Code fast fertig. Aber aus einem mir nicht verständlichem Grund, findet er im Verzeichnis1 und den vielen Unterordner nur 13 Files, danach geht er zum Verzeichnis2 und deren vielen Unterordner, aber auch dort findet er nur 13 Files. Kann mir da jemand weiter helfen? Unten steht der Komplette Code.
var_Verzeichnis_1 = "Y:\Scripting\Beispiele\Test\a" ' Hier wird gesucht!
var_Verzeichnis_2 = "Y:\Scripting\Beispiele\Test\k" ' Hier wird gesucht!
' var_Verzeichnis_3 = "X" ' Hier wird gesucht!
' var_Verzeichnis_4 = "X" ' Hier wird gesucht!
var_logfile = "Y:\Scripting\Beispiele\test.log" ' Hier wird das Logfile abgelegt.
var_zeit = 5 ' Anzahl Stunden
'-----------------------------------------------------------------
' Ende Einstellungen
'-----------------------------------------------------------------
Dim var_datei
Dim var_dateien
Dim var_untere
var_forAppending = 8
MoveLog(var_logfile)
Set var_fs = CreateObject("Scripting.FileSystemObject")
var_fs.CreateTextFile(var_logfile)
Set var_os = var_fs.GetFile(var_logfile)
Set var_os2 = var_os.OpenAsTextStream(var_forAppending, 0)
var_heute = Date()
Set var_fso = CreateObject("Scripting.FileSystemObject")
Set var_ordner = var_fso.GetFolder(var_Verzeichnis_1)
var_os2.writeline("Job vom " & var_heute & " im Orner " & var_ordner & " und dessen Unterverzeichnissen")
SuchenInFolder(var_ordner)
Set var_ordner = var_fso.GetFolder(var_Verzeichnis_2)
var_os2.writeblanklines 1 'Schreibt eine Leere Zeile
var_os2.writeline("Job vom " & var_heute & " im Orner " & var_ordner & " und dessen Unterverzeichnissen")
SuchenInFolder(var_ordner)
' Möglichkeit noch mehrer Verzeichnise zu durchsuchen
Wscript.Echo "Fertig"
var_os2.Close()
Sub SuchenInFolder(var_ordner)
Set var_dateien = var_ordner.Files
' Alle Dateien in diesem Ordner abklappern
For Each var_datei In var_dateien
If DateDiff("h", var_heute, var_datei.DateCreated) < var_zeit Then
var_os2.writeline( var_datei.Path & " vom " & var_datei.DateCreated )
'WScript.Echo var_datei.Path & " vom " & var_datei.DateCreated
End If
Next
Set var_untere = var_ordner.SubFolders
' Alle Unterordner abklappern, SuchenInFolder rekursiv aufrufen
For Each var_unter In var_untere
SuchenInFolder var_unter
For Each var_datei In var_dateien
If DateDiff("h", var_heute, var_datei.DateCreated) < var_zeit Then
var_os2.writeline( var_datei.Path & " vom " & var_datei.DateCreated )
'WScript.Echo var_datei.Path & " vom " & var_datei.DateCreated
End If
Next
NEXT
End Sub
Sub MoveLog(var_logfilename)
On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
var_oldlogname = var_logfilename & ".old"
Set var_f2 = fso.GetFile(var_oldlogname)
var_f2.Delete
Set var_f2 = fso.GetFile(var_logfilename)
var_f2.Move(var_oldlogname)
End Sub 124 dezentrale Dominoserver 6.5.1 auf W2k3
4600 Clients (auch 6.5.1, D/F/I), davon ca. 350 DWA-User | | | | | | | | Moderator
Status: Offline Beiträge: 2,917 Registriert seit: 13.01.2004 Ort: Swizzerland Alter: 30 | AW: VBS zum Archivieren von Dateien -
07.11.2007, 14:49
Wieso machst Du das nicht einfach mit Robocopy? Gruess
der Herr Moderator
Du hast mindestens zwei gute Freunde: Freund 1, Freund 2 | | | | | | | | Fortgeschrittener Benutzer
Status: Offline Beiträge: 135 Registriert seit: 12.10.2004 Ort: Zürich Alter: 23 | AW: VBS zum Archivieren von Dateien -
07.11.2007, 15:15
Kann Robocopy nach Erstellungsdatum suchen?
Meines Wissens kann er nur nach Last Access Date & Last Modified Date suchen.
Die Textdatei die ich mit diesem Script erstelle und mit den Daten Namen fühle, werde ich im 2.Schritt weiterverwenden. Und zwar sollen diese Daten die älter als 2 Jahre sind, anschliessend in ein Zip archiviert werden. Die Textdatei soll als Input diehnen. 124 dezentrale Dominoserver 6.5.1 auf W2k3
4600 Clients (auch 6.5.1, D/F/I), davon ca. 350 DWA-User | | | | | | | | Profi Benutzer
Status: Offline Beiträge: 665 Registriert seit: 01.06.2004 Ort: Zug Alter: 25 | AW: VBS zum Archivieren von Dateien -
07.11.2007, 16:32
@KuGoZeD
Das ganze könntest du natürlich auch einfach mittels .NET realisieren. Für Fragen melde dich mal bei mir (per PM). HF Student (4.Semester)
MCSD .NET / MCPD (Enterprise Application Developer)
MCTS MS SQL Server 2005 (70-431,70-441)
nächster Schritt: MCITP - Database Developer (70-442) | | | | | | | | Erfahrener Benutzer
Status: Offline Beiträge: 333 Registriert seit: 17.03.2005 Ort: Babelsberg | AW: VBS zum Archivieren von Dateien -
08.11.2007, 12:02
Hi,
das kann man ganz gut bequem mit forfiles.exe machen (von der Windows 2003 CD, muss extrahiert werden).
Befehl: <tt>forfiles /p "e:" /d -10 /s /c "cmd /c if @isdir==TRUE echo @file"</tt> zeigt alle Verzeichnisse, in denen die letzten Veränderungen (Dateiänderungen, Löschungen etc.) 10 Tage zurück liegen. So kann man natürlich auch per xcopy die Verzeichnisse wegsichern und anschließend löschen.
Das Startverzeichnis (hinter Parameter /p darf keinen Backslash am Ende haben). Ansonsten schaue mal nach mit /?.
Kann man auch in ein VBS-Script einbauen. | | | | | | | | Fortgeschrittener Benutzer
Status: Offline Beiträge: 135 Registriert seit: 12.10.2004 Ort: Zürich Alter: 23 | AW: VBS zum Archivieren von Dateien -
09.11.2007, 08:37
Mercie für die Tips. Mein Script funktioniert jetzt aber so wie es soll. Hab nichts mehr geändert, hab beim anlegen der testdatei eine Fehlüberlegung gemacht. 124 dezentrale Dominoserver 6.5.1 auf W2k3
4600 Clients (auch 6.5.1, D/F/I), davon ca. 350 DWA-User | | | | |
| | |