0

フォルダー内のすべてのファイルを取得し、このフォルダーとその内容を 1 つの RAR ファイルに変換するバット スクリプトがあります。このスクリプトは、コピーを作成し、このファイルをバックアップ フォルダーに移動すると、現在の日付も追加します。このバッチ ファイルを 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"  
) 
4

3 に答える 3

1

それはちょうどそう起こります...

これを行う非常によく似たスクリプト (Visual Basic Sc​​ript) があります。ただし、ディレクトリ パス、ファイル拡張子 (.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

それが役立つことを願っています。

于 2010-06-08T22:43:24.063 に答える
0

forfiles.exe というユーティリティを見てください - これは必要なことを行うはずです

于 2010-06-08T22:28:05.697 に答える
0

ロボコピーを試してみてください!最初にすべてのファイルを削除フォルダーに移動してから、フォルダーを削除する必要があります。バッチ ファイルでは次のようになります。

md C:\Delete
robocopy YourFolderToDeleteFrom C:\delete /E /minage:7
rmdir C:\delete /S /Q
于 2010-06-08T22:28:21.727 に答える