バッチファイルで外部ファイルに記載したターゲットリストを1行づつ読み込んでいく方法
最近バッチばかり書いているので主に備忘録
レガシーだけど実際に現役で動いてるからね・・・
bat
For /F "オプション" %%i In (-ファイル名-) do (
処理
)
自分が理解するために少し間違っててもイメージで書いてます。
オプション | 意味 | 備考 |
---|---|---|
eol= | 行末を意味する(Javaとかの;みたいな・・・) | |
tokens= | 区切ったところを変数に格納して使える1,1-2な感じで書く | %%i %%j %%k とかになる |
skip= | ファイルの頭を何行飛ばすか指定する | 行頭って説明書いたりするし |
usebackq | ファイル名に空白や()なんかがついてる時用 | ””使えるようにする |
delims= | 区切り文字を指定する何にも書かないと空白とかタブ | なんか最後に書かないといけないっぽい? |
オプションでdelims=,とか書いておけばcsv形式のターゲットリストとかから読み込んで使える
sample
For /F "tokens=1-2 skip=1 delims=," %%i In (hogehoge.csv) do (
CALL :SAMPLE1 %%i %%j
GOTO :EOF
)
CALL :END
:SAMPLE1
何かの処理
GOTO :EOF
:END
終了処理
hogehoge.csv
No,Name
1,hogeeeee
2,fugaaaaa
3,ueeeeeee
%%i %%j に格納されるNo,NameがCALLで呼び出されるサブルーチンの第一引数、第二引数になる
つまりこの場合%%i %%jは以下と同じ意味をもつ
変数=%~1 <===> %%i
変数=%~2 <===> %%j
因みに、%~0でバッチファイルの名前を取得できる
バッチファイル自身のパスの取得は%~dp0
最近はこんなツール使ってます。
情報はエディタでリファリながら勉強してます。
バッチ用エディタ
vbsやvba、PSなんかはおいおい・・・今はバッチファイル。