• 締切済み

削除バッチ方法を教えてください

Aフォルダの中のあるファイルのみを残し、他のファイルを削除するバッチorDOSコマンドを教えてください? ログファイルを削除するために上記のような仕様でバッチ作成したいのですが、いろいろと調べていますが、わかりません。 ファイル名を見て削除したいと考えています。 ログのファイル形式は、年日付時刻ABCファイルとなり、当日と前日のログだけを残して、他のログを削除したいのですが、、、 宜しくお願いします。

みんなの回答

  • jx-word
  • ベストアンサー率40% (38/94)
回答No.3

ファイル名をチェックするとなかなか手強いですが、ファイル自体の日時で判別すると比較的簡単です。 下記は*.logファイルの内、一番新しい2つのファイルの残して他は消すという処理です。 (バッチファイル内なら%aは%%aに置き換え) for /f "skip=2 tokens=*" %a in ( 'dir /o-d /b *.log' ) do del "%a" 後は適当に環境に合わせて修正してください。 なお、このような自動削除系の処理は内容をよく理解した上で扱ってください。

  • ma0309
  • ベストアンサー率0% (0/0)
回答No.2

質問者さんはおそらく毎日自動でバッチ処理したいと思っておられるのだと思いますが、A No.1 さんの方法だと毎回日付を入力しないといけないので 自動での処理は難しいと思います。 http://www.mtzk.com/soft/ に dxcopy と言う日付の部分を自動的に生成して xcopy を起動するコマンドがありますので、A No.1 さんの方法の xcopy の所を dxcopy に置き換えたら何とかなるのではないでしょうか。 たしかオプションの指定で前日のファイルもコピー出来たと思います。 私はこれで会社のサーバーのバックアップを取ってます。 もう少しスマートな方法を紹介できれば良かったのですが、とりあえず今すぐに思いつくのはそんな所です。

参考URL:
http://www.mtzk.com/soft/dxcopy.txt
  • 245689731
  • ベストアンサー率22% (76/341)
回答No.1

>ログのファイル形式は、年日付時刻ABCファイルとなり、   ファイル名などの形式がちょっとハテナなのですが以下のような感じでしょうか?   md z:\new xcopy z:\old z:\new /d:9-1-2007 del z:\old\*.* copy z:new\*.* z:\old del z:\new\*.* md z:\new ドライブが[z]としてそこに[new]というフォルダを作ります。 xcopy z:\old z:\new /d:9-1-2007 同一ドライブ上の[old]フォルダから[new]フォルダへ上記の場合2007.9.1以後の日付 ファイルをコピーします。 del z:\old\*.* [old]フォルダにあるファイルを全て削除します。 copy z:new\*.* z:\old [new]フォルダから[old]フォルダへファイルをコピーします。 del z:\new\*.* [new]フォルダ内の全ファイルを削除します。 あなたのドライブ構成やフォルダ構成が判りませんので環境に合わせてみてためして ください。バッチファイルと言うことなのである程度の力量のあるユーザー様として 回答しています。これを使って必要なデータまで消えても責任は持てませんので自己 責任でお願いします。 多少、回りくどいようなコマンドになっています。

関連するQ&A