Люблю команду PowerShell Джеффа, но для альтернативного решения vbs для компьютеров с Windows без PowerShell вы можете попробовать следующее.
Сохранить как <filename>.vbs
и выполнить:
<filename>.vbs <target_dir> <NoDaysSinceModified> [Action]
Третий параметр [Action]
- необязательный. Без этого файлы старше, чем <NoDaysSinceModified>
будут перечислены. С ним установлено, как D
он будет удалять файлы старше, чем<NoDaysSinceModified>
пример
PurgeOldFiles.vbs "c:\Log Files" 8
будет список всех файлов c:\Log Files
старше 8 дней
PurgeOldFiles.vbs "c:\Log Files" 8 D
будет удалять все файлы c:\Log Files
старше 8 дней
примечание: это модифицированная версия скрипта Хайдонга Цзи на SQLServerCentral.com
Option Explicit
on error resume next
Dim oFSO
Dim sDirectoryPath
Dim oFolder
Dim oFileCollection
Dim oFile
Dim iDaysOld
Dim fAction
sDirectoryPath = WScript.Arguments.Item(0)
iDaysOld = WScript.Arguments.Item(1)
fAction = WScript.Arguments.Item(2)
Set oFSO = CreateObject("Scripting.FileSystemObject")
set oFolder = oFSO.GetFolder(sDirectoryPath)
set oFileCollection = oFolder.Files
If UCase(fAction) = "D" Then
'Walk through each file in this folder collection.
'If it is older than iDaysOld, then delete it.
For each oFile in oFileCollection
If oFile.DateLastModified < (Date() - iDaysOld) Then
oFile.Delete(True)
End If
Next
else
'Displays Each file in the dir older than iDaysOld
For each oFile in oFileCollection
If oFile.DateLastModified < (Date() - iDaysOld) Then
Wscript.Echo oFile.Name & " " & oFile.DateLastModified
End If
Next
End If
'Clean up
Set oFSO = Nothing
Set oFolder = Nothing
Set oFileCollection = Nothing
Set oFile = Nothing
Set fAction = Nothing