• ベストアンサー

DOSコマンドで1ヶ月前更新日のファイルを削除

環境:Windows2003server(XPも) DOSコマンドで、1ヶ月(30日でもOK)以上前の更新日に該当するファイル(あるディレクトリ配下でサブディレクトリ含む)を削除したいのですが、簡単に実行するには、どのようなbatを組めばよろしいでしょうか? 過去に同じようなBatchを組まれた方いらっしゃいましたら、お教えください よろしくお願いいたしますm(__)m

質問者が選んだベストアンサー

  • ベストアンサー
  • kumoz
  • ベストアンサー率64% (120/185)
回答No.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 を削除していました。

takashi_it
質問者

補足

え~、すみません。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

関連するQ&A