- ベストアンサー
Windowsバッチでの作成について困っております。
当方、大学2年の学生です。 現在履修しています情報系の講義で、連休の課題として 「WindowsのDosバッチ作成」の課題が出ました。 課題の期限は16日(金)です。 課題の内容は、 「ファイルを自動で削除するバッチの作成」です。 あるフォルダにたまったファイルを、月に一回自動削除するもので、 削除対象のファイルは削除日より一年以上経過している全ファイルです。 例えば、削除日が2009年10月10日だとすると、削除対象ファイルは 2008年10月10日以前のファイルになります。 *ファイル名は任意ですが、例えば「Sample20090101.log」のようにしようと思ってます。 また削除した際には、削除したファイル名と日付をログに残します。 ================================ 恐らく大まかな処理の流れとしては、 1.まず、ファルダにあるファイルをリストする。 フォルダはパスを変数で指定し、ファイルはdirを使って表示する形になるのかなと思います。 2.次にその中で削除対象となるファイル(削除日より一年以上経過しているという条件で分岐させる)を検索する。 3.次に、削除対象のファイルを削除する。 4.最後に削除したファイル名と日付のあるログを出力する。 以上のようになるかと思います。 *1~3の処理を一つのバッチで、4のログを出力用にさらにもうひとつバッチをつくろうかと思います。 ネットで検索してみますと、このような処理をDosで作るのは難しい。。。というような意見が多く、 自分もWindowsDosバッチの作成は経験がなく、困っています。 どなたかご教示いただければと存じます。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
「課題とは自分でやるもの」というANo.1さんの意見には賛成ですが、一応、ヒント位は。 「WindowsのDosバッチ作成」と一言で言っても、Windowsのバージョンによって使えるコマンドの仕様が変わっています。2000/XP以降の「コマンドプロンプト」は、各コマンドがかなり拡張されているので、ご質問の処理は、 set FilePath=検索対象フォルダのフルパス名 for %%i in (%FilePath%\*.*) do ( 変数%%iにファイル名が一つずつ入って処理が繰り返されるので、 ファイル名から年月日を切り出す。 if文で年月日を判定し、1年以上経過していたら、ファイルを削除+ログに書き出す。 ) で出来てしまいますが、9x/Meだと無理だったように思います(未確認) for文やif文の使い方は、コマンドプロンプトを起動して、 for /? if /? でヘルプを、ファイル名の切り出し方は下記参考URLを参照。 『@IT:バッチ・ファイル中で日付をファイル名に使用する』 http://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdate.html
その他の回答 (1)
- SaKaKashi
- ベストアンサー率24% (755/3136)
別になんも難しいことはないですけど。 ネットを検索したようですが、無駄なことですね。 そもそも、大学の課題なら自分で何とかすべきでしょ。 ここで回答もらってもなんの足しにもならんと思いますけど。 大学の図書館でも行けば書籍があるでしょ。 ま、しいてヒントをあげるなら、削除しながらログに書かないとだめですな。
お礼
そうですね・・。いただいたヒントをもとに 何とか頑張ってみます。ありがとうございます。
お礼
具体的でわかりやすいヒントを提示してくださりありがとうございます。 作成は2000/XP以降のコマンドプロンプトですので、いただいたヒントで解決までもっていくことができそうです。 どうもありがとうございます。