ハムスターに飼われる院生のブログ

自分用メモが中心のブログです。

フォルダ内にあるインプットファイル全てから計算条件を読み込んで実行するバッチファイル

定時デバッグ用に作成したバッチファイルを以下に示す。
以下の記事で示したバッチファイルの亜種となっている。
chicagopile1-75.hatenablog.com

【実行時の状況】
・test.exeは引数を2つとる実行ファイル
・インプットファイル全てはinput*.txtという名称でinput0~9が存在
・インプットファイル内にはtest.exeに与える引数が格納されている
・インプットファイル内はにはタブ又はスペース区切り
・呼び出し先のバッチファイル名はson.bat
・インプットファイル一覧はlist.txtとして保存される

【実行後の状況】
・年月日/input*_output*.txt に結果が出力される

まずは呼び出し元のバッチファイルを以下に示す。

@echo off
@setlocal enabledelayedexpansion

dir input*.txt/b > list.txt
for /f %%a in (list.txt) do (
  call son.bat %%a
)
pause

ここから下がson.batであり、呼び出し先のバッチファイル。

@echo off
@setlocal enabledelayedexpansion

rem *****************************************************************

set /a num=0
set F=outputN.txt
set InputName=%1
call :Make_Dir
for /f "tokens=1,2" %%a in (%1) do (
	set para1=%%a
	set para2=%%b
	call :DoCalc
	set /a num =!num! + 1
)
goto :END
rem *****************************************************************

:DoCalc
	cd %FILE_PATH%
	copy ..\test.exe test.exe
	echo execute_!num!
	echo para1:%para1% para2:%para2%
	echo para1:%para1% para2:%para2% >%InputName:~-0,6%_%F:N=!num!%
	call test %para1% %para2%>> %InputName:~-0,6%_%F:N=!num!%
	cd..

:Make_Dir
	set FILE_PATH=%DATE:~-10,4%%DATE:~-5,2%%DATE:~-2%
	call :CHECK_FOLDER_EXIST %FILE_PATH%
	goto :END

:CHECK_FOLDER_EXIST
	if not exist %FILE_PATH% (
	    mkdir %FILE_PATH%
	)
	goto :END

:END