#突然のWindowsバッチ
業務にてバッチファイルを組むことになり、あちらこちら調べ回る羽目になったので備忘録代わりに書き起こしておく。
#やりたいこと
カンマ区切りのファイルから1行ずつ読み込んでjavaに渡す引数にする。
読み込むファイルは以下。
hoge.csv
# a,b,c,d,f,g,h,i,j,k,l
# a日本語名,b日本語名...(省略)
1,12345,4,3,2,1,1,1
2,12346,4,3,2,1,1,1,1,0,0
#3,12347,4,3,2,1,1,1,1,0,0
要は#の行はコメントで読みたくない。
#やったこと
実際に組んだbatファイルの内容は以下。
hoge.bat
:FileRead
REM FOR文でCSVファイルを読み込む
FOR /F "eol=# tokens=1-11 delims=," %%i IN (hoge.csv) DO (
java -classpath . hogePackage.HogeClass %%i %%j %%k %%l %%m %%n %%o %%p %%q %%r %%s
)
内容はこんな感じ
・読みたくない行をeol=#で指定。
・tokensはそのまんま。1番目の値から11番目の値を使う。
・delimsは区切り文字を指定。今回はカンマ区切りなのでdelims=,を指定。いろいろ応用できるみたいだけど今回はスルー。
・ファイル名の指定は今回は相対パスで指定。
・javaに渡す引数にはiからsまで11個の値を指定。これは連続していないといけないみたい。
#とりあえず動いたので打ち止め
今回はかなりイレギュラーな対応だったため、動いた時点で終了。
ただ、今後も必要になりそうなので勉強が必要かな。