テキストファイルからコマンドライン引数を指定して実行し、はじめの引数ごとにフォルダ分けして出力するバッチファイル
exefile.exeという実行ファイルが6つのコマンドライン引数をとる状態での話。
このコマンドライン引数を変えて大量に計算したい場合、
インプットファイルの中に引数を記し、そこからコマンドライン引数を読み込んで実行することができる。
このためのバッチファイル(testbat.txt)を作成したので以下にメモしておく。
@echo off setlocal enabledelayedexpansion rem ***************************************************************** set /a num=0 set F=outputN.txt for /f "tokens=1,2,3,4,5,6" %%a in (%1) do ( set para1=%%a set para2=%%b set para3=%%c set para4=%%d set para5=%%e set para6=%%f call :DoCalc set /a num =!num! + 1 ) goto :END rem ***************************************************************** :DoCalc call :MakeDir echo execute_!num! call exefile.exe %para1% %para2% %para3% %para4% %para5% %para6% > para1_is_!para1!/%F:N=!num!% :MakeDir set FilePath=para1_is_!para1! call :CheckFolderExistence %FILE_PATH% goto :END :CheckFolderExistence if not exist %FilePath% ( mkdir %FilePath% set /a num=0 ) goto :END :END
インプットファイル名がinputfile.txtの場合、実行するときはコマンドプロンプトにて
testbat.bat inputfile.txt
と入力する。
これを実行すると、パラメータ1の値ごとにフォルダわけされて、その中にoutput0.txtから順に連番にて結果が出力される。
なお、インプットファイルの中身はn行6列の数字で、スペース区切りである。
※2018_07_25に修正
・インプット最終行の計算条件のみ2度計算が実行されるようになっていたため、その点を修正(rem****の前にgoto:ENDを挿入)