フォルダ内のファイル分、一定時間毎に処理を同期実行する

フォルダ内に含まれるファイルの件数分、繰り返しながら特定の処理をする場合がよくありますので掲載します。

※処理は同期実行し、終了後は数秒待機しています。

  • フォルダ内のファイル分、一定時間毎に処理を同期実行する
<周期実行.bat>
@echo off

rem INPUTファイルのパスを指定(ワイルドカードを利用可)
set FILE_PATH=C:\file\input_file_*.csv

echo 処理開始

rem 該当のファイル数分、繰り返しファクションを呼び出す
for %%F in (%FILE_PATH%) do (

	call :func "%%F"
)
exit /b 0

:func
	set FILE_NAME=%~1

	echo 実行開始(%FILE_NAME%)

	rem ファイル名を指定して何かを実行
	java -classpath "Test.jar;" TestClass "%FILE_NAME%"

	echo 実行終了

	rem 10秒待機する
	timeout /t 10

exit /b 0

※Setlocal enabledelayedexpansionを利用して遅延展開させても可能ですが、まとまった処理を関数で定義した方がわかりやすいので、私はそうしています。