ไฟล์ BAT: ลบไฟล์ทั้งหมดในไดเรกทอรีที่เก่ากว่า 5 วันยกเว้นหนึ่งไฟล์


2

ฉันมีไดเรกทอรีที่มีไฟล์ temp มากมาย ไฟล์ทั้งหมดที่เก่ากว่า 5 วันสามารถลบได้ยกเว้นไฟล์เดียว 'DoNotDelete.txt' ดังนั้นฉันควรเพิ่มอาร์กิวเมนต์พิเศษลงในสคริปต์ปัจจุบันของฉัน:

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

ใครสามารถให้เหตุผลนี้

คำตอบ:


0

ฉันไม่คิดว่า forfiles มีตัวเลือกดังกล่าว (พิมพ์ 'forfiles /?') เป็นวิธีแก้ปัญหาที่คุณสามารถ (ชั่วคราว) attrib +h donotdelete.txtตั้งหนึ่งของระบบคุณลักษณะอ่านอย่างเดียวหรือซ่อนไว้ในไฟล์นี้เช่น การทำเช่นนี้จะป้องกันไม่ให้ไฟล์ลบออก


มีวิธีอื่นนอกเหนือจากการใช้คำสั่ง forfiles หรือไม่ VBscript?
Jvd

ใช่ VBScript สามารถทำสิ่งนี้ได้อย่างแน่นอนดูmsdn.microsoft.com/en-us/library/aa242706%28v=vs.60%29.aspx
Berend

Berend คุณสามารถช่วยฉันด้วยคำถามด้านล่าง?
Jvd

0

ฉันมี VBScript นี้เพื่อล้างโฟลเดอร์นี้แล้ว ฉันจะเพิ่มคำสั่งพิเศษเพื่อข้ามไฟล์ 'DoNotDelete.txt' ได้อย่างไร คุณช่วยได้ไหม

ขอแสดงความนับถือ 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 

Thanx ถึง Matthew Williams และ Berend
Jvd
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.