[前の記事]« NT系:スペースを含むコマンド出力結果を1つの環境変数に格納する
[次の記事][NT系]ipconfigの実行結果からIPアドレスのみを抜き出したい »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「DATE,TIME…日付、時刻の取得/利用」索引へ
▲カテゴリー「DEL,ERASE,REN…ファイル削除/復活/移動/名前の変更」索引へ

[NT系]更新日時と照らし合わせてファイルを削除したい

886) 更新日時と照らし合わせてファイルを削除したい ちぐ 2003/11/20(木) 19:38


5.00.2195使用

初めて、書き込みます。よろしく御願いします。
フォルダ内に自動的に溜まっていくファイルの更新日付と
システムの時間を照らし合わせて、
例えば「一ヶ月前のものは、自動的に削除する」ような
バッチファイルを作成したいのですが、検討がつきません
有識者のかたのご意見を拝聴できればと思います。

よろしく御願いします

889) Re:更新日時と照らし合わせてファイルを削除したい Hellcat 2003/11/21(金) 00:13


OSがよくわかりませんが参考まで。

手っ取り早く処理するにはフリーソフトが楽だと思います。
Unix like toolのfindfコマンドの例を紹介します。

以下のファイルがC:\WORKディレクトリーにあるとします。
-rw---a 561343 Nov 20 2003 23:34 lha32kit.lzh
-rw---a 378470 Nov 19 2003 23:23 test.zip
-rw---a 378470 Nov 18 2003 23:23 test2.zip
-rwx--a 395608 Nov 17 2003 23:23 ulh3187b.exe

例えば今日が11月20日だとして、2日以上前のファイルを削除したい場合は

findf c:/work -maxdepth 1 -type f -mtime +1 -daystart -exec del {} ;

とします。これにより
-rw---a 378470 Nov 18 2003 23:23 test2.zip
-rwx--a 395608 Nov 17 2003 23:23 ulh3187b.exe
の2つのファイルが削除されます

つまり+1は「2日以前」という意味になります。
{}にfindfコマンドが探しだしたファイル名称が代入されます。

いきなり削除するのが危険ですので、

findf c:/work -maxdepth 1 -type f -mtime +1 -daystart -exec echo {} ;

として{}に削除すべきファイル名称が正しく代入されていることを確認した方が安全です。

又は-exec del {} /P ;
として削除前に確認するという方法もありますが。

いずれにしろfindfコマンドは多機能で使い方が難しいので注意してください。

findfコマンドは
UXTL412F.TARに含まれています。
http://www.asahi-net.or.jp/~bi3t-aoym/nidetool.htm
を参考にしてみてください。
使う場合は、くれぐれもマニュアルをよく読んでください。

894) Re2:更新日時と照らし合わせてファイルを削除したい ちぐ 2003/11/21(金) 13:29


早々のご返答、ありがとうございました。
ひとつ、マナー違反というか、OSを書き込むのを忘れておりました。
UNIXではなくて、Windows2000のProfessionalなんです。

同じ方法を使えたりするものでしょうか?
また、Windows系には全く使えなく、新たに別の方法をご存知でしたら
教えていただけたら幸いです。

895) Re3:更新日時と照らし合わせてファイルを削除したい ふぇむ 2003/11/21(金) 16:20


>UNIXではなくて、Windows2000のProfessionalなんです。
>同じ方法を使えたりするものでしょうか?

ここは「DOSプロンプト活用相談」なので、変に脱線しない限りはUNIXを前提にはしないと思います。

Hellcalさんのご紹介されたツールは私は使ったことはありませんが、大丈夫なんじゃないでしょうか?
簡単だと思うので、一度実践されてみては。


>また、Windows系には全く使えなく、新たに別の方法をご存知でしたら
>教えていただけたら幸いです。

コマンドスクリプトだけでも実現はできます。私も類似のものを実際書いて使っています。しかし、それにはかなりのスクリプト記述力がないと難しいと思います。環境が許せば、Hellcatさんご紹介の方法がよいのではないかと。



897) Re3:更新日時と照らし合わせてファイルを削除したい Hellcat 2003/11/21(金) 22:21


>UNIXではなくて、Windows2000のProfessionalなんです。
既にふぇむさんからフォロー頂いていますが………

御紹介したツールはUNIXのツールではありません。
UNIXで使われている基本的なコマンドをMS-DOS上に実装したものがUnix Like Toolsで、findfコマンドはその中の一つです。
ファイルのリスト例がlsコマンドのものだったため、UNIXと思われたのでしょう。
紛らわしくて済みません。

このUnix Like Toolsのマニュアルでは、「DOS汎用(WindowsのDOS環境を含む。)であり、これまでに多種にわたるDOS環境で動作を確認している」としています。

Win2000ですと、
http://www.piedey.co.jp/softs/ntuxtl.html
のNT版Unix Like Toolsなども使ってみたらどうでしょうか。

P.S.
>システムの時間を照らし合わせて、
>例えば「一ヶ月前のものは、自動的に削除する」ような
これはとりもなおさず、現在の日付から30日(31日)前の日付を計算すると言うことですよね。
もちろんWin2000でしたらコマンドスクリプトで計算できると思いますが、閏年なども考えると、ちょっとたいへんそうですね。
だからこそ面白いという人もいるのでしょうが(^^)。
MS-DOSの時代はコマンドが貧弱なため、各種のツールの助けが必要でした。
このUnix Like Toolsなどは痒いところに手が届くツールで、今でも重宝しています。
寡黙なところもパイプ処理などにはうってつけです。
 
 


カテゴリー「DATE,TIME…日付、時刻の取得/利用」索引へ
カテゴリー「DEL,ERASE,REN…ファイル削除/復活/移動/名前の変更」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2003年11月20日 18:42に投稿されたエントリーのページです。

ひとつ前の投稿は「NT系:スペースを含むコマンド出力結果を1つの環境変数に格納する」です。

次の投稿は「[NT系]ipconfigの実行結果からIPアドレスのみを抜き出したい」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート