毎月 1 日に最後に変更されたファイルを除き、フォルダー内の 2 日以上前のファイルを削除する必要があります。Forfiles は例外をサポートしていません。オペレーティング システムは Windows Server 2003 です。何かアイデアはありますか?
皆様ご協力ありがとうございました!
答え1
ここでは、ファイルが月の 1 日のものかどうかを列挙するために英国の日付形式を想定しています。別の日付形式を使用する場合は、適切な数値位置を取得するようにトリム コマンドを変更します。たとえば、米国の日付は、Left(objFile.DateLastModified, 2) = 01 ではなく Mid(objFile.DateLastModified, 4, 2) = 01 になります。
とにかく、汚いコードで申し訳ありませんが、これで始めることができるはずです。
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
答え2
それは、プログラミング言語やスクリプト言語に対するあなたの知識と快適さに依存すると思います。
例えば、PowerShellは次のようになります例私はPython、Perl、(nix/Linux)系の言語を好んで使っていますが、そのようなことはPythonでは非常に簡単です(例)。
これらの例は両方ともグーグル検索から得たものですPowerShellは古いファイルを削除しますまたはPythonは古いファイルを削除します...代替案を確認したい場合に備えて。
私は実際に必要になったことがないので、そのようなことを行うための GUI ツールやクイック セットアップ ツールについてはよく知りません。ほとんどの場合、あなたが尋ねていることはすべて 20 行未満でコーディングできます。