バッチファイルでの更新日時による表示

このQ&Aのポイント
  • バッチファイルを使って、ユーザーが指定したフォルダ内で特定の条件に基づいて更新日時が表示されるプログラムを作成します。
  • ユーザーは指定したフォルダをドラッグ・アンド・ドロップし、日付を入力し、特定の条件を選択することができます。
  • プログラムは、指定した条件に基づいて更新日時が表示されるだけでなく、サブフォルダも含めて表示することができます。
回答を見る
  • ベストアンサー

バッチファイルでの更新日時による表示

以下の機能を備えるバッチファイルを作成したいと思っています。 1.ユーザーからフォルダをドラッグ・アンド・ドロップしてもらう。 2.ユーザーに日付を入力してもらう(yyyymmdd方式) 3.ユーザーに下記の2つから選んでもらう。   1.入力した日付よりも前に更新されたファイルを表示   2.入力した日付よりも後に更新されたファイルを表示 4.ユーザーから受け付けた条件で、サブフォルダも含めて   コマンドプロンプト上に    更新日時 ファイルへのパス   を表示する。 以上の動作をするバッチファイルを作りたいです。 開発環境 OS:WindowsXP できれば、バッチファイルでの作成を考えていますが WHSやVBSで実現可能ならそちらの方法でも受け付けます。 この機能を実現できるフリーソフトがあればそれも受け付けます。 以上です。

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

  • ベストアンサー
  • pita-gora
  • ベストアンサー率70% (102/145)
回答No.1

こんにちは。 ざっと作ってみました。一応XPで動作確認済みです。 ただし、ドラッグ&ドロップするものがフォルダであるか、日付の値が妥当であるかのチェックまではしていません。 また入力された日付は含みません。 含む場合は、バッチ内 LSS → LEQ , GTR → GEQ と変えてください。 ------------------------------------------- list.bat echo off set /P YYYYMMDD=日付を入力してください(YYYYMMDD): :loop echo ---------------------------------------------------- echo 入力した日付よりも前に更新されたファイルを表示 - [1] echo 入力した日付よりも後に更新されたファイルを表示 - [2] echo ---------------------------------------------------- set /P chk= 1 か 2 を入力してください: if not defined chk goto loop if %chk% EQU 1 set op=LSS&goto listup if %chk% EQU 2 set op=GTR&goto listup goto loop :listup echo. for /R %1 %%F in ( *.* ) do call :sub "%%~fnxF" %%~tF cmd /k :sub set fdate=%2 set fdate=%fdate:/=% if %fdate% %op% %YYYYMMDD% echo %2 %3 %1 goto :EOF

hiro0163
質問者

お礼

回答ありがとうございます。 期待通りの動作を確認することができました。 バッチファイルの奥深さを知ることができ、勉強になりました。 他にも色々なバッチファイルを書いてみようと思います。 本当にありがとうございました。

関連するQ&A

  • バッチファイルで悩んでいます。

    プログラミング初心者です。 御教授の程、宜しくお願いします。 以下のプログラムは 1.ユーザーからフォルダをドラッグ・アンド・ドロップしてもらう。 2.ユーザーに日付を入力してもらう(yyyymmdd方式) 3.ユーザーに下記の2つから選んでもらう。   1.入力した日付よりも前に更新されたファイルを表示   2.入力した日付よりも後に更新されたファイルを表示 4.ユーザーから受け付けた条件で、サブフォルダも含めて   コマンドプロンプト上に    更新日時 ファイルへのパス   を表示する。 ------------------------------------------- list.bat echo off set /P YYYYMMDD=日付を入力してください(YYYYMMDD): :loop echo ---------------------------------------------------- echo 入力した日付よりも前に更新されたファイルを表示 - [1] echo 入力した日付よりも後に更新されたファイルを表示 - [2] echo ---------------------------------------------------- set /P chk= 1 か 2 を入力してください: if not defined chk goto loop if %chk% EQU 1 set op=LSS&goto listup if %chk% EQU 2 set op=GTR&goto listup goto loop :listup echo. for /R %1 %%F in ( *.* ) do call :sub "%%~fnxF" %%~tF cmd /k :sub set fdate=%2 set fdate=%fdate:/=% if %fdate% %op% %YYYYMMDD% echo %2 %3 %1 goto :EOF このプログラムに関しまして、 4.ユーザーから受け付けた条件で、サブフォルダも含めて   コマンドプロンプト上に    更新日時 ファイルへのパス   を表示する。 をコマンドプロンプト上にではなく、エクセルファイル上に変更したいです。 教えて頂きますと助かります。 それでは、宜しくお願い致します。

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

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

  • バッチ等で、ファイルの作成日時を変えたいです

    初めての質問です。よろしくお願いします。 バッチファイルなどを使って、フォルダの中にある全部のファイルの 作成日時を、そのファイルの更新日におき変えたいと思っています。 (エクスプローラーのタブで確認できる"作成日時"の事です) 今ファイルの作成日時が、ファイルのコピーによって更新日時より 新しくなってしまいました。検索するソフトが作成日を参照するため どうしても不具合がでてしまいます。 せめて作成日を、同じファイルの更新日と同じものにすれば、 作成日時に近いため何とか運用できるかもしれません。 エクセルはもっていますので、VBAなどでも、もし わかればおねがいします。m(_ _)m

  • FTPのバッチファイルで日付を引数で与えたい

    いつもお世話になっております。 FTPのバッチファイルに引数を与える良い方法をご存知ありませんか。 FTPの中では環境変数は使えないとのことですし、悩んでいます。 取得するファイルは日付毎のディレクトリに入っていて、取得後も日付毎のディレクトリに保管するので日付の指定が必要なのですが。 [ftpget.bat]------------------------------------------ ftp-s:ftpget.bat open ホスト名 ユーザー名 パスワード bin prompt cd /~対象ホストのディレクトリ~/YYYYMMDD/host1 !mkdir C:\YYYYMMDD lcd C:\YYYYMMDD mget *.txt quit ---------------------------------------------------- このYYYYMMDDの部分を、『ftpget.bat 20081125』のようにバッチを流す時の引数で与えたいです。 日付は3日前だったり昨日だったり今日だったりします。 今は直接ファイルを編集してYYYYMMDDの部分3箇所を手で直してからバッチファイルを叩いています。 よろしくお願いいたします。

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

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

  • バッチファイル作成で困っています

    ルートディレクトリの直下に、たくさんのフォルダが存在し、 すべてのフォルダ名がyyyymmdd形式の日付になっています。 例えば c:\20211215 c:\20220123 c:\20220302 c:\20220419 c:\20220524 ちなみに、本日の日付を表すフォルダ名が一番数字が大きいものです。(つまり未来の日付のものはありません) バッチファイルに引数を入れて、引数で指定した数字以降のものだけ すべてc:\workの下にフォルダごとxcopyするバッチファイルは どう作れば良いのでしょうか。 例えば、引数が20220225ですと、上記の例ではxcopyの対象は c:\20220302 c:\20220419 c:\20220524 の3つになります。 for /d ループになるように思いますが、お知恵(サンプル)をいただきたく。

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

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

  • バッチファイルの作成

    お世話になっております。 バッチファイルの作成方法について、只今勉強中です。 現在、毎日行われている作業をバッチファイルで自動化が出来ないか検討しておりますが、バッチファイルの編集に苦戦していて困っております・・・ ---実行したい事--- 0.以下、作業の流れをコマンドプロンプト上で表示する。 1.C:\ツール\batというフォルダに移動する。 2.batフォルダに新しく「file」というフォルダを作成 3.batフォルダ内には「bat_YYYY/MM/DD.txt」という日付のテキストがあり、該当する日付のテキストをコピーしてfileフォルダへ貼り付ける。 4.fileフォルダへ移動する。 ---終了--- 手順を全部書いてしまっているのですが、途中まではバッチファイルの編集をする事が出来ました。しかし、正解しているか不安です。 ご教授の程、宜しく御願い致します。

  • バッチでの応答キー記載方法

    しょうも無い質問で申し訳ないです^^; 下記バッチファイルを実行しバックアップのタスクを作成しているのですが、実行中、 『E:\ggg\061014は受け取り側のファイル名ですか、またはディレクトリ名ですか(F= ファイル、D= ディレクトリ)?』 と表示されるところで止まってしまいます。 ここでは"D"を入力して先へ進むようにするようにするにはどうしたら良いのでしょうか? またなぜかデスクトップに日付名フォルダが出来てしまいます。(中身は空です)それもできないようにしたいのですが、どこが間違っているのかわかりません。ご教授願います。 <バッチファイル> set ymdtmp=%DATE:/=% set yyyymmdd=%ymdtmp:~2% cd e:\aaa md %yyyymmdd% xcopy /s /e /v c:\ddd\eee\*.* e:\ggg\%yyyymmdd%

  • バッチファイルで同じフォルダ名がある場合

    バッチファイルで下記のように実行後にフォルダ名を指定して フォルダを作成したいのですが既に同じフォルダ名があった場合 同じフィルだがある旨のメッセージを表示するのとそこでバッチファイルを 終了してよいか?というようなバッチファイルを作成したいのですが バッチファイルコマンドプロンプトの知識があまりありません。 どなたか教えてください。 echo off set /p USER_INPUT=フォルダ名を入れてください。: mkdir %USER_INPUT%