@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET BATDIR=%~dp0
SET TEST="C:\UnxUtils\usr\local\wbin\test.exe"
SET TOUCH="C:\UnxUtils\usr\local\wbin\touch.exe"

REM //==========================================================================
REM // * Mon Sep 19 21:47:11 JST 2016 Naoyuki Sawa
REM // - dir\*.txtはVS++6.0の依存ファイルに登録していないので、dir\*.txtだけを更新してもVS++6.0のビルドが実行されない問題が有ります。
REM //   この問題を回避するために、当バッチファイルを実行すると、DirSeq.txtよりもdir\*.txtが新しければ、DirSeq.txtの時刻を更新します。
REM //   残念ながら、VC++6.0のビルド前に、当バッチファイルを自動的に実行する事は出来ないので、手動で当バッチファイルを実行して下さい。
REM // * Sun Sep 25 21:05:26 JST 2016 Naoyuki Sawa
REM // - DirSeq.txtとdir\*.txtだけでなく、他の全てのテキストファイルにも対応出来るように変更しました。
REM //   テキストファイル名の先頭三文字と同じ名前のフォルダが、このテキストファイルがインクルードする可能性の有るフォルダとするので、
REM //   今後、テキストファイルやフォルダを増やしても、上記のルールに従っている限り当スクリプトの変更は不要で、自動的に対応出来ます。
REM //==========================================================================

REM //--------------------------------------------------------------------------
REM //この下の処理で、時刻を更新すべきテキストファイルのパス名を、TOUCH_FILESに連結して行く。
SET TOUCH_FILES=

REM //--------------------------------------------------------------------------
FOR %%i IN ("%BATDIR%*.txt") DO (
  REM //この下の処理で、このテキストファイルよりも新しいファイルが有れば、ファイル名をUPDATEDに連結して行く。
  SET UPDATED=
  REM //このテキストファイルのパス名を取得する。
  SET TXT_PATH=%%i
  REM //このテキストファイルのベース名を取得する。
  SET TXT_NAME=%%~ni
  REM //このテキストファイル名の先頭三文字と同じ名前のフォルダが、このテキストファイルがインクルードする可能性の有るフォルダとします。
  REM // - テキストファイル名の先頭三文字と同じ名前の通常のファイルが有った場合に除外するよう、フォルダ名の末尾に'\'を付けておきます。
  SET TXT_DIR=%BATDIR%!TXT_NAME:~0,3!\
  REM //このテキストファイルがインクルードする可能性の有るフォルダが有れば…
  IF EXIST "!TXT_DIR!" (
    REM //このテキストファイルがインクルードする可能性の有るフォルダ階層内の、全ての通常のファイルについて…
    FOR /F "usebackq" %%j IN (`DIR /A-D /B /S "!TXT_DIR!"`) DO (
      REM //このテキストファイルよりも新しいファイルが有れば、ファイル名をUPDATEDに連結して行く。
      (%TEST% "%%j" -nt "!TXT_PATH!") && (
        SET UPDATED=!UPDATED! %%~nxj
      )
    )
  )
  REM //- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
  REM //このテキストファイルよりも新しいファイルが有ったら…
  IF "!UPDATED!" NEQ "" (
    REM //このテキストファイルよりも新しかったファイル名を表示する。
    ECHO %%~nxi Updated:!UPDATED!
    REM //時刻を更新すべきテキストファイルのパス名を、TOUCH_FILESに連結する。
    SET TOUCH_FILES=!TOUCH_FILES! "!TXT_PATH!"
  ) ELSE (
    REM //{{削除:更新されなかった表示が多過ぎて、更新されて表示が目立たないので、個々の更新されなかった表示は行わず、一つも更新が無かった場合だけ最後に表示する事にした。
    REM //    REM //このテキストファイルの時刻が更新されなかった事を表示する。
    REM //    ECHO %%~nxi No updated
    REM //}}削除:更新されなかった表示が多過ぎて、更新されて表示が目立たないので、個々の更新されなかった表示は行わず、一つも更新が無かった場合だけ最後に表示する事にした。
  )
)

REM //--------------------------------------------------------------------------
REM //時刻を更新すべきテキストファイルが有れば…
IF "!TOUCH_FILES!" NEQ "" (
  REM //テキストファイルの時刻を更新する。
  %TOUCH% !TOUCH_FILES!
REM //時刻を更新すべきテキストファイルが無ければ…
) ELSE (
  REM //一つも更新が無かった事を表示する。
  ECHO No updated
)

REM //--------------------------------------------------------------------------
REM //ECHO 完了しました。
REM //PAUSE
EXIT /B

REM //--------------------------------------------------------------------------
:L_ERR
ECHO ###エラーが発生しました。
REM //PAUSE
EXIT /B 1
