特定のフォルダにファイルが置かれたらお知らせする Windows バッチ

謎のバッチを紹介。

@Echo Off

Rem ──────────
Rem 環境設定 ココカラ
Rem ──────────

Rem ファイル存在チェックを実行する繰り返し間隔 (秒)
Set SECONDS=5

Rem ファイル存在チェック対象フォルダ (ChDir コマンドの場合はパスにスペースがあってもダブルクォートで囲まなくて平気)
ChDir /d C:\ココにファイルが 置かれるよフォルダ\

Rem ──────────
Rem 環境設定 ココマデ
Rem ──────────

Rem 待ち時間を表現するドット
Set DOTS=.

:DO_WHILE
Cls
Echo ファイル監視
Echo 中断する際は Ctrl + C を入力してください...

Dir | Find "0 個のファイル" > Nul
If Not "%ERRORLEVEL%" == "1" (
  Set DOTS=%DOTS%.
  Echo %DOTS%
  Timeout /t %SECONDS% /nobreak > Nul
  GoTo DO_WHILE
)

Echo.
Echo ┏━━━━━━━━━━━━┓
Echo ┃ファイルが置かれました!!┃
Echo ┗━━━━━━━━━━━━┛
Echo.
Echo 任意のキーを入力するとバッチファイルを終了します...
Pause > Nul

Exit /b

昼の仕事で特定のフォルダにファイルが置かれるのを待ち続けることがあって、フォルダの中身を監視するスクリプトがあったらいいんじゃないか?と思って作ってみた。

作りは至ってシンプルで、Dir の結果を Find して、0 個のファイル という文字列がヒットしなくなったら = ファイルが1個以上置かれたらメッセージを切り替える、というだけ。

ファイル監視を再試行している感じを表現するために、画面にドットを表示させていくとかいうことをしてみた。あんまり長い時間放置したことがないので、この Echo によるバグがあったりするかもしれない。よく知らない。

VBScript とかの方がポップアップとか出せていいかなーとか思ったけど、簡易版っつーことで。

ちなみにコマプロからメッセージダイアログを表示させる方法はこんなのがあるみたい。その場で VBScript 生成して、TEMP フォルダに置いておけばいいんやな~。

Echo MsgBox "メッセージよぉん", vbCritical, "タイトルよぉん" > %TEMP%/msgboxtest.vbs & %TEMP%/msgboxtest.vbs

またつまらぬものを作ってしまった…