2つのディレクトリを監視し、ファイルを自動的に移動する
"監視ディレクトリ1"と、"監視ディレクトリ2"をチェックします。
どちらかのディレクトリに、"監視条件"に合うファイル(ファイル名)が見つかると、"送り先"へ移動します。
条件に合うファイルがどちらにも見つからなかった場合、"タイマ時間"待機して、その後に再度チェックします。
ファイル名に半角スペース等があるとうまく動きません。
@echo off setlocal rem --------------------------------------------------------------- rem 2つのディレクトリを監視し、ファイルを自動的に移動する rem --------------------------------------------------------------- rem <変数セット> :parameter rem 監視条件 set FILE_NAME=*.ts rem 監視ディレクトリ1 set SRC1_DIR=G:\1 rem 監視ディレクトリ2 set SRC2_DIR=G:\2 rem 送り先 set MOVE_DIR=G:\3 rem タイマ時間(sec) set TIMER_SET=60 rem <プログラム本体> :main set NUM=0 rem ディレクトリがなければ作成 if not exist %MOVE_DIR% mkdir %MOVE_DIR% :move1 cd /d %SRC1_DIR% set GET_NAME="" rem 一番古いファイルを取得 for /f "delims=" %%F in ('dir %FILE_NAME% /o-d /b') do set GET_NAME=%%F rem 対象が存在しなければ次のルーチンへ if %GET_NAME%=="" goto cnt1 rem 対象が存在すれば送り先へ移動させる move %GET_NAME% %MOVE_DIR%\%GET_NAME% echo 移動: %GET_NAME% → %MOVE_DIR% echo. goto move2 :cnt1 rem 無限ループ回避用 set /a NUM+=1 goto move2 :move2 cd /d %SRC2_DIR% set GET_NAME="" rem 一番古いファイルを取得 for /f "delims=" %%F in ('dir %FILE_NAME% /o-d /b') do set GET_NAME=%%F rem 対象が存在しなければ次のルーチンへ if %GET_NAME%=="" goto cnt2 rem 対象が存在すれば送り先へ移動させる move %GET_NAME% %MOVE_DIR%\%GET_NAME% echo 移動: %GET_NAME% → %MOVE_DIR% echo. goto move1 :cnt2 rem 無限ループ回避用 if %NUM% gtr 0 goto timer goto move1 :timer rem タイマ timeout /T %TIMER_SET% goto main