Plik BAT: Usuń wszystkie pliki z katalogu starszego niż 5 dni z wyjątkiem jednego pliku

2

Mam katalog z wieloma plikami tymczasowymi. Wszystkie pliki starsze niż 5 dni można usunąć z wyjątkiem jednego pliku „DoNotDelete.txt”. Dlatego powinienem dodać dodatkowy argument do mojego obecnego skryptu:

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

Czy ktoś może przedstawić ten argument?

Jvd
źródło

Odpowiedzi:

0

Nie sądzę, aby forfiles miał taką opcję (wpisz „forfiles /?”). Aby obejść ten problem, możesz (tymczasowo) ustawić jeden z atrybutów systemu, tylko do odczytu lub ukryty w tym pliku, np. attrib +h donotdelete.txt. Zapobiegnie to usunięciu plików forfiles.

Berend
źródło
Czy istnieje inny sposób niż użycie instrukcji forfiles? VBscript?
Jvd
Tak, VBScript zdecydowanie może to zrobić, zobacz msdn.microsoft.com/en-us/library/aa242706%28v=vs.60%29.aspx
Berend
Berend, możesz mi pomóc z pytaniem poniżej?
Jvd
0

Mam już ten skrypt VBScript do wyczyszczenia tego folderu. Jak mogę dodać dodatkowe polecenie, aby pominąć plik „Nie usuwaj.tekstu”? Możesz pomóc?

Pozdrowienia, 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 
Jvd
źródło
Podziękowania dla Matthew Williamsa i Beyond
Jvd