none
ファイル名の日付箇所を判定してファイルを削除するバッチファイル RRS feed

  • 質問

  • ファイル名が「yymmdd」形式のファイルが毎日取得されており、
    10日以上経過しているファイルを削除したいと考えております。
    更新日付でフィルターをかけるにはforfilesコマンドで実装できるのは認識しておりますが、
    バッチファイルにて上記を実装する手段はありますでしょうか?
    またPowerShellは使用できない環境となっております。

    (例)4/10にファイル削除をする場合
    <固定文字列>_170331_<プロセスID>.log ⇒ 削除する
    <固定文字列>_170401_<プロセスID>.log ⇒ 削除しない
    2017年4月20日 11:48

すべての返信

  • BAT ファイル内で FORFILES コマンドを実行するのではダメなのでしょうか?

    BAT ファイル内で例えば FORFILES /D -10 /M *.log /C "cmd /c del @file" と書くことで達成できます。

    2017年4月22日 14:23
  • Tomoaki Yoshizawa さん、

    例示されている FORFILES /D -10 は、ファイルのタイムスタンプで判断していると思います。
    質問者の方は(タイムスタンプではなく)ファイル名(の一部)で判断して削除したいとおっしゃっています。なので、回答にはならないように思われますが・・・
    ____________
    北窓舎:芦田
    2017年4月24日 8:39
  • marlboro_power さん、

    PowerShell は使用できない環境とのことですが、Windows アプリケーション(*.exe)も使用/実行できないのでしょうか?

    バッチファイルでの実装という制約条件をお書きになっているので、回答にも制限が付くと思います。もし *.exe の実行が可能ということであれば、ソフトを作りご提供したいと思います。(もちろん無償で)
    _______________
    北窓舎:芦田

    (2017/4/25 追記)
    念のため、申し添えます。
    私は個人事業主で Windows 用のソフトウェアを開発しています。ソフトを作り無償でご提供したいと書いたのは、私にとってソフトウェア開発の練習になるため、そして(marlboro_power さんは企業におつとめだと推測するので)企業でお使いいただいたという実績になるためです。それ以外の理由はありません。


    • 編集済み Ashidacchi 2017年4月25日 3:09 追記
    2017年4月24日 9:22
  • marlboro_power さんがおっしゃっているのは 「10 日以上経過しているファイルを削除したい」 であって、「ファイル名で日付を判定したい」 とはおっしゃっていませんので、、、

    2017年4月25日 13:11