7日以上経過したファイルを削除するbatスクリプト
-
25-09-2019 - |
質問
フォルダー内のすべてのファイルを取得し、このフォルダーとその内容を 1 つの RAR ファイルに変換するバット スクリプトがあります。このスクリプトは、コピーを作成し、このファイルをバックアップ フォルダーに移動すると、現在の日付も追加します。このbatファイルをWindowsスケジューラタスクで毎日実行する予定です。
私の質問:
このスクリプトに、バックアップ フォルダー内の 7 日より古い rar ファイルをすべて削除する方法はありますか?
for /f "delims==" %%D in ('DIR D:\scripts /A /B /S') do (
"C:\Program Files\WinRAR\WinRAR.EXE" a -agyyyy-MM-dd -r "c:\backup\scripts.rar" "%%D"
)
解決
それはたまたま...
これを行う非常によく似たスクリプト (Visual Basic Script) があります。ただし、ディレクトリ パス、ファイル拡張子 (.RAR)、および日付の長さを変更する必要があります (この例では、>=3 がこれを 7 に設定します)。
編集1:これをコピーして新しいテキストファイルに貼り付け、拡張子の名前を .vbs に変更するだけです。
サンプル ソリューション スクリプト:
On Error Resume Next
Dim fso, folder, files, sFolder, sFolderTarget
Set fso = CreateObject("Scripting.FileSystemObject")
'location of the database backup files
sFolder = "X:\Data\SQL_Backup\"
Set folder = fso.GetFolder(sFolder)
Set files = folder.Files
'used for writing to textfile - generate report on database backups deleted
Const ForAppending = 8
'you need to create a folder named “scripts” for ease of file management &
'a file inside it named “LOG.txt” for delete activity logging
Set objFile = fso.OpenTextFile(sFolder & "\scripts\LOG.txt", ForAppending)
objFile.Write "================================================================" & VBCRLF & VBCRLF
objFile.Write " DATABASE BACKUP FILE REPORT " & VBCRLF
objFile.Write " DATE: " & FormatDateTime(Now(),1) & "" & VBCRLF
objFile.Write " TIME: " & FormatDateTime(Now(),3) & "" & VBCRLF & VBCRLF
objFile.Write "================================================================" & VBCRLF
'iterate thru each of the files in the database backup folder
For Each itemFiles In files
'retrieve complete path of file for the DeleteFile method and to extract
'file extension using the GetExtensionName method
a=sFolder & itemFiles.Name
'retrieve file extension
b = fso.GetExtensionName(a)
'check if the file extension is BAK
If uCase(b)="BAK" Then
'check if the database backups are older than 3 days
If DateDiff("d",itemFiles.DateCreated,Now()) >= 3 Then
'Delete any old BACKUP files to cleanup folder
fso.DeleteFile a
objFile.WriteLine "BACKUP FILE DELETED: " & a
End If
End If
Next
objFile.WriteLine "================================================================" & VBCRLF & VBCRLF
objFile.Close
Set objFile = Nothing
Set fso = Nothing
Set folder = Nothing
Set files = Nothing
それが役立つことを願っています。
他のヒント
forfiles.exeと呼ばれるユーティリティを見ている - これはあなたが
必要なものを行う必要がありますrobocopyをお試しください!あなたが最初のバッチファイルで、このようなものを削除し、フォルダにすべてのファイルを移動して、フォルダをdelteする必要があります:
md C:\Delete
robocopy YourFolderToDeleteFrom C:\delete /E /minage:7
rmdir C:\delete /S /Q
所属していません StackOverflow