BAT-Datei: Löschen Sie alle Dateien in einem Verzeichnis, das älter als 5 Tage ist, mit Ausnahme einer Datei

1320
Jvd

Ich habe ein Verzeichnis mit vielen temporären Dateien. Alle Dateien, die älter als 5 Tage sind, können gelöscht werden, außer einer Datei 'DoNotDelete.txt'. Daher sollte ich meinem aktuellen Skript ein zusätzliches Argument hinzufügen:

 forfiles /p "D:\tmp" /s /d -5 /c "cmd /c del @file : date >= 5 days >NUL" 

Kann jemand dieses Argument liefern?

2

2 Antworten auf die Frage

0
Berend

Ich glaube nicht, dass forfiles eine solche Option hat (Typ 'forfiles /?'). Als Problemumgehung können Sie (vorübergehend) eines der Systemattribute für diese Datei festlegen, z attrib +h donotdelete.txt. Dadurch wird verhindert, dass Forfiles es löscht.

Gibt es einen anderen Weg als die forfiles-Anweisung? VB-Skript? Jvd vor 9 Jahren 0
Ja, VBScript kann dies definitiv tun, siehe http://msdn.microsoft.com/de-de/library/aa242706%28v=vs.60%29.aspx Berend vor 9 Jahren 0
Berend, kannst du mir mit der unten stehenden Frage helfen? Jvd vor 9 Jahren 0
0
Jvd

Ich habe bereits dieses VBScript, um diesen Ordner aufzuräumen. Wie kann ich den zusätzlichen Befehl hinzufügen, um die Datei 'DoNotDelete.txt' zu überspringen? Kannst du helfen?

Grüße, JvD

Dim fso, startFolder, OlderThanDate  Set fso = CreateObject("Scripting.FileSystemObject") startFolder = "D:\tmp" ' folder to start deleting (subfolders will also be cleaned) OlderThanDate = DateAdd("d", -04, Date) ' 04 days (adjust as necessary)  DeleteOldFiles startFolder, OlderThanDate  Function DeleteOldFiles(folderName, BeforeDate) Dim folder, file, fileCollection, folderCollection Set folder = fso.GetFolder(folderName) Set fileCollection = folder.Files For Each file In fileCollection  If file.DateLastModified < BeforeDate And StrComp(file.name,'donotdelete.txt', vbTextCompare) <> 0 Then fso.DeleteFile(file.Path) End If  
Danke an Matthew Williams und Berend Jvd vor 9 Jahren 0