[DOS]array
DOS上で配列や連想配列を使いたくなることがある。
for /l %I in (0,1,2) do (
echo %arrayVar[%I]%
)
のように、ループをしたい場合でも、上記は動いてくれない。(バッチ上では%I
ではなく%%I
で書くが、これはあまり関係ない。for
文というよりは、do (~~)
の展開の仕方が問題で、set /?
のヘルプの最後の方に解説がある。
配列という概念がないため、変数名を動的に切り替える形で実現する。DOSの変数展開について知る必要があるが、とりあえず答えを書いてしまう。
setlocal enableexpansion
rem べたにアクセスする場合
set key=keyvalue
set var[%key%]=aaa
echo !var[%key%]!
rem forループでアクセスする場合
for /L %I in (0,1,2) do (
set var[%I]=value%I
endlocal
for /L %I in (0,1,2) do (
echo !var[%I]!
)
バッチファイルの時にfor
の変数%I
を%%I
にする必要があるのは通常と同じだ。配列そのものではなく、var[0]
という名前の変数だということだけ覚えておいて欲しい。[]の中は、変数名として使える文字列であればなんでもよく、配列はわかりやすく数値をそのまま使用しているだけ。
0 件のコメント:
コメントを投稿
登録 コメントの投稿 [Atom]
<< ホーム