Ich muss Dateien in einem Ordner löschen, die älter als zwei Tage sind, außer Dateien, die zuletzt am 1. eines jeden Monats geändert wurden. Forfiles unterstützt keine Ausnahmen. Das Betriebssystem ist Windows Server 2003. Irgendeine Idee?
Vielen Dank an alle für die Hilfe!
Antwort1
Hier ein schnelles und einfaches VBScript: Es wird das britische Datumsformat für die Aufzählung angenommen, wenn die Datei vom 1. des Monats ist. Wenn Sie ein anderes Datumsformat verwenden, ändern Sie den Trimmbefehl, um die entsprechenden Zahlenpositionen zu erfassen. Ein US-Datum wäre beispielsweise Mid(objFile.DateLastModified, 4, 2) = 01 statt Left(objFile.DateLastModified, 2) = 01
Wie auch immer, entschuldigen Sie den schmutzigen Code, aber er sollte Ihnen für den Anfang weiterhelfen.
strFolder = "C:\DeleteTest"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(strFolder)
Set colFiles = objFolder.Files
strDaysOld = 2
'Get files from target folder
For Each File in colFiles
set objFile = objFSO.GetFile(strFolder & "\" & File.Name)
'Enumerate last modified date/time and delete if older than 2 days but where the date doesn't start with '01'
If objFile.DateLastModified < (Date() - strDaysOld) AND NOT Left(objFile.DateLastModified, 2) = 01 Then
objFSO.DeleteFile objFile, true
End If
Next
Antwort2
Ich würde sagen, das hängt von Ihrer Vertrautheit und Ihrem Komfort mit Programmier-/Skriptsprachen ab.
Hier ist beispielsweise eine PowerShellBeispiel. Ich bevorzuge eher Python, Perl (die *nix/Linux) Varianten und so etwas wäre in Python ziemlich einfach (Beispiel).
Beide Beispiele stammen von einer Google-Suche.Powershell löscht Dateien, die älter sind alsoderPython löscht Dateien, die älter sind als...falls Sie nach Alternativen prüfen möchten.
Ich kenne keine GUI-Tools oder Schnelleinrichtungstools dafür, da ich sie nie wirklich gebraucht habe. Alles, was Sie verlangen, kann in den meisten Fällen in weniger als 20 Zeilen codiert werden.