• ベストアンサー

Windowsバッチでの作成について困っております。

当方、大学2年の学生です。 現在履修しています情報系の講義で、連休の課題として 「WindowsのDosバッチ作成」の課題が出ました。 課題の期限は16日(金)です。 課題の内容は、 「ファイルを自動で削除するバッチの作成」です。 あるフォルダにたまったファイルを、月に一回自動削除するもので、 削除対象のファイルは削除日より一年以上経過している全ファイルです。 例えば、削除日が2009年10月10日だとすると、削除対象ファイルは 2008年10月10日以前のファイルになります。 *ファイル名は任意ですが、例えば「Sample20090101.log」のようにしようと思ってます。 また削除した際には、削除したファイル名と日付をログに残します。 ================================ 恐らく大まかな処理の流れとしては、 1.まず、ファルダにあるファイルをリストする。    フォルダはパスを変数で指定し、ファイルはdirを使って表示する形になるのかなと思います。 2.次にその中で削除対象となるファイル(削除日より一年以上経過しているという条件で分岐させる)を検索する。 3.次に、削除対象のファイルを削除する。 4.最後に削除したファイル名と日付のあるログを出力する。 以上のようになるかと思います。   *1~3の処理を一つのバッチで、4のログを出力用にさらにもうひとつバッチをつくろうかと思います。   ネットで検索してみますと、このような処理をDosで作るのは難しい。。。というような意見が多く、 自分もWindowsDosバッチの作成は経験がなく、困っています。 どなたかご教示いただければと存じます。よろしくお願いします。

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

  • ベストアンサー
  • deadline
  • ベストアンサー率63% (1239/1943)
回答No.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

Rook09
質問者

お礼

具体的でわかりやすいヒントを提示してくださりありがとうございます。 作成は2000/XP以降のコマンドプロンプトですので、いただいたヒントで解決までもっていくことができそうです。 どうもありがとうございます。

その他の回答 (1)

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

別になんも難しいことはないですけど。 ネットを検索したようですが、無駄なことですね。 そもそも、大学の課題なら自分で何とかすべきでしょ。 ここで回答もらってもなんの足しにもならんと思いますけど。 大学の図書館でも行けば書籍があるでしょ。 ま、しいてヒントをあげるなら、削除しながらログに書かないとだめですな。

Rook09
質問者

お礼

そうですね・・。いただいたヒントをもとに 何とか頑張ってみます。ありがとうございます。

関連するQ&A

  • バッチ作成についてご教示願います。

    当方、現在大学2年の学生です。大学の課題でわからない箇所があり、困っております。 課題は情報系の講義で以下のような感じです。 「A~Cの各店舗のフォルダから1か月より前のファイルを月次で自動的に削除するバッチを作成せよ。」 A店舗フォルダ B店舗フォルダ C店舗フォルダ 以上の3フォルダにはそれぞれ 1日ごとの売り上げファイルが格納されている。 それらの売り上げファイルで 1か月以上前のファイルを自動的に削除する。 例えば、削除日が毎月の1日だとする。 10月1日になったら、9月1日から以前のファイルを削除する。 そして、消したファイルの名前と削除した日付をログにを残す。 ファイル名は「SaleA_20091001.log」みたいな感じです。 必要な機能としては、 ・それぞれの各フォルダ内のファイルがなくなるまで検索する(for文?) ・1か月以上前のファイルであるかどうか条件分岐する(if文) ・1か月以上前のファイルであれば、削除する。 以上の3つが主な機能だと考えています。 バッチはWindowsのコマンドプロンプトで作成しようと思っています。 バッチ作成は今回が初めてなので、なかなかイメージしづらくて困っております。 どなたか、ご教示願えますでしょうか。 よろしくお願いします。

  • Windowsバッチでできるのかな・・・

    Windowsバッチで質問させてください。 バッチで処理するCSVファイルがありまして、 ファイル名は「File_20091108」という感じです。 処理の対象となるのは、バッチ実行日より1日前以前のファイル、 例えば、今日11月8日の処理対象は11月7日以前のファイルに なります。1日前のファイルだけでなく、それ以前のファイルも 対象となるので、ここら辺で苦戦しています。 どなたかご教示くださますでしょうか・・・。 よろしくお願い致します。

  • バッチファイルの作成方法

    バッチファイルの初心者です。 下記のようなバッチを作成したいと思っています。 (1)本日の日付のディレクトリを作成する。 (2)そのディレクトリに数時間毎に作成される***.logを全て移動する。 (3)3日前に作成したディレクトリを削除する。 以上のような流れのバッチファイルは簡単に作成できるのでしょうか?

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

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

  • Windowsで、古いログファイルを削除するバッチを作成したいです。

    Windows2003システムで、ある1つのディレクトリの中で一定期間を経過した古いログファイルを削除するようなバッチを急遽作ることになりました。でも、バッチファイルの作成の経験がなく苦戦しています。。 フリーのツール等は使用不可で、なんとかバッチで作りたいのですが、どなたか助けてください(>_<) ちなみに、ファイル名はこのような形です。 abc20071106.log abc20071107.log... 同じディレクトリ内には、上記ファイル以外のファイルも存在します。

  • コピーバッチの作成について。

    コピーバッチの作成について。 現在フォルダのコピーバッチを作成しようと考えています。 ただ、未熟なもので、なかなか難しく、できればご教授していただければと思い、 投稿させていただきました。 尚、現在作成したいコピーバッチは下記となっています。 1. テストPC01に不定期に配置されるフォルダを、テストPC02上にコピーする。 (フォルダ名はTEST20100919という形で、TESTのみ固定で日付が毎回変動する) 1.5 フォルダがない場合はバッチファイル終了。 2. コピー後に、テストPC02の特定のサービスを停止する。 3. テストPC02にコピーした、TEST20100919をTESTにリネームする。 4. 2.で停止したサービスを起動する。 5. テストpc01のコピー元フォルダを削除する。 (また、上記のバッチで実行された内容をログに吐き出させたいと考えています) このような処理をバッチファイルで行うことは可能でしょうか。 可能でしたら、お手数ですがご教授願えないでしょうか。 よろしくお願いいたします。

  • バッチで特定のファイルを消す方法と日付の計算

    いつもお世話になっております。 バッチの作成方法について教えてください。 tmpフォルダには日々ログファイルが作成されていきます。 ログファイルのファイル名はバラバラですが、必ず20140527のように yyyymmddの日付が入っています。 3日前のログはもう不要なので、削除したいのです。 (1)本日より3日前の計算はどのようにしたらよいでしょうか? (2)3日前の日付が入っているファイル名を削除するにはどのようにしたらよいでしょうか? 具体的にプログラムを書いて教えていただけないでしょうか。 お手数をおかけしますが、よろしくお願いします。

  • DOSコマンドで指定日数よりも過去のフォルダを削除

    サーバ上のログファイルを日毎に次のようなフォルダにまとめて管理しています。 (ログフォルダは翌朝のDOSバッチジョブでBACKUP_(処理日付)のフォルダを作成してその下に*.*指定で全てのファイル(除 フォルダ)を移動して作成します。) 例. BACKUP_20041130 BACKUP_20041129 BACKUP_20041128    ・    ・    ・ BACKUP_20040311 BACKUP_20040310 このフォルダを処理日付から数えて90日より古いものを削除するDOSコマンドバッチファイル(日次実行)を作成したいです。 プログラムを作成すればこれを実現するのは可能なんですが、なんとかDOSコマンドだけでこの仕組を作りこめないものでしょうか? ご存知の方がいらっしゃったら教えて下さい。

  • バックアップ(世代管理)機能のバッチファイルを作成したい

    バッチでバックアップファイルを作成したいです。 機能は下記のとおりです。  ・バックアップを毎営業日(平日)とる  ・3世代保存する  ・バックアップ処理成功後、最も古いバックアップを削除する まず、システム日付を取得して、YYYYMMDDフォルダを作成し、その配下に保存したいのです。 でもYYYYMMDDフォルダの作成方法がわかりません。 次に、システム日付より3日以上古い日付を見つけて、該当するものがあったら削除するようにしたいです。 書籍やこのサイトでいろいろ調べているのですが、わからなくて・・・。 このサイトではバッチではシステム日付YYYYMMDDでディレクトリを作成することは出来ない・・・という回答がありましたが、やはり不可能なのでしょうか? ご回答いただきたくよろしくお願いします。

  • バッチファイルについて

    現在、ログ世代管理バッチファイルを作成していますが、 方法は、日付ごとに作成されたログフォルダからシステム日付より365日以降のフォルダを削除するといったものです。 しかしながら、どうしてもフォルダ(日付)の比較方法が上手くいきません。365日前のフォルダを削除する事はできるのですが、365日以降のフォルダの削除ができません。 詳しい方がいましたら、お教えねがえないでしょうか? 宜しくお願い致します。