majortom
Goto Top

WSH Script - Zeitstempel einer Datei manipulieren

Hi zusammen,

wir haben einen temporären Ordner, der normalerweise alle 5 Tage gelöscht werden sollte.
Um das nicht händisch zu machen, soll ein WSH-Script überprüfen, welche Dateien älter als 5 Tage sind und den aktuellen Zeitstempel verpassen, damit diese Dateien 5 Tage dort verweilen können. Also am besten das create-Datum verwenden.
Zusätzlich (Nachdem der erste Teil des Scripts durchgelaufen ist) soll in diesem Script eine Abfrage stattfinden, die schaut, welche Dateien älter als 5 tage sind und diese dann löschen.

Den zweiten Teil habe ich bereits geschrieben nur tue ich mich mit dem ersten recht schwer.

Kann mir jemand helfen?

Content-ID: 35174

Url: https://administrator.de/contentid/35174

Ausgedruckt am: 26.11.2024 um 15:11 Uhr

Biber
Biber 30.06.2006 um 21:14:45 Uhr
Goto Top
Moin MajorTom,

ist keine so unlösbare Aufgabe...

Eines der nicht so aufgeblähten Beispiele für eine Lösung ist hier:
http://www.codecomments.com/archive299-2005-4-434167.html

Weil es relativ kurz und knackig ist, poste es mal (denn von Kosmetischen Änderungen abgesehen würde ich es von der Strategie genau so machen):
You can modify a file's DateModified-Property using ShellAutomation.
ShellFileItem's ModifyDate-property is read-write.
In contrast to the FSO-solution, you don't have to copy, move or create
the file don't have to install 3rd party tools, e.g
touch from Borland/cygwin.

Dim newDate, file
file = "C:\someexistingfile.dat"  
newDate = DateSerial(2099,1,1) + TimeSerial(0,0,0)

Call modifyDateMod file, newDate

Sub modifyDateMod(strFilePath, newDate)
'# works at least on xp, independently from FS (NTFS or FAT)  
Dim sh, sf, fi
Dim Dir, File, pos

pos = InstrRev (strFilePath, "\")  
Dir = Left(strFilePath, pos)
File = Mid (strFilePath, pos+1)

'Get FolderItem  
Set sh = CreateObject ("Shell.Application")  
Set sf = sh.NameSpace (Dir)
Set fi = sf.ParseName (File)

'manipulates the FolderItem's Last-Modificaton-Date  
fi.ModifyDate = newDate

End Sub

Okay - statt "newDate = DateSerial(2099,1,1) + TimeSerial(0,0,0)" solltest du "date", also dasheutige Datum nehmen..
Der Rest sollte passen.

Oder Du gehst über das FileSystemObject (Set oFSO=CreateObject("Scripting.FileSystemObject"). Siehe Forumssuche.

Gruß
Biber