2006/10/24

[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]

<< ホーム