- ベストアンサー
DOSコマンドで1ヶ月前更新日のファイルを削除
環境:Windows2003server(XPも) DOSコマンドで、1ヶ月(30日でもOK)以上前の更新日に該当するファイル(あるディレクトリ配下でサブディレクトリ含む)を削除したいのですが、簡単に実行するには、どのようなbatを組めばよろしいでしょうか? 過去に同じようなBatchを組まれた方いらっしゃいましたら、お教えください よろしくお願いいたしますm(__)m
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
私が以前 DOS を使っているときに作ったのは、サブディレクトリを含まないものです。参考までに、 md work xcopy *.* work /d:06-12-29 (日付は %1 で指定) if errorlevel 1 goto Error del *.* copy work\*.* goto End :Error echo ファイルの保存に失敗しました :End 後は、確認してプロンプトから work を削除していました。
補足
え~、すみません。VBscriptで自己解決してしまいました。 ありがとうございました。 ---- ' 何日前の日付を削除したいかは、 ' 下のマイナス後の値を変えてください delTargetDate = Date - 30 ' 削除対象フォルダ Dim delFolder delFolder = Array( _ "D:\data\download\backup" _ , "D:\data\recv\backup" _ , "D:\data\send\backup" _ , "D:\data\upload\backup" _ ) ' ここから削除処理 10万ファイルは超えないと想定 dim delFiles(100000) delfileStr = "" iCnt = 0 ' 削除対象フォルダをまわす Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") For Each result In delFolder Set objFolder = objFSO.GetFolder(result) For Each objFile In objFolder.Files if "" & delTargetDate > Left(objFile.DateCreated,10) then delFiles(iCnt) = objFolder.Path & "\" & objFile.Name delfileStr = delfileStr & objFolder.Path & "\" & objFile.Name & vbCrLf iCnt = iCnt + 1 end if Next Next ' 削除対象ファイルの削除 For jCnt = 0 to iCnt-1 WScript.CreateObject("Scripting.FileSystemObject").DeleteFile delFiles(jCnt) Next ' 削除対象を表示 WScript.Echo delfileStr