タグ

ブックマーク / www.odin.hyork.net (1)

  • Studio ODIN - blog風小ネタ集 > コマンドプロンプトの遅延環境変数

    コマンドプロンプトで FOR ループなどを使っているときに 「あれ? 変数の値が変わらない??」ということがあります。 例えば、バッチファイルに次のように書いてあるとします。 FOR /F %%i IN ('SET') DO ECHO %%i これは、コマンド SET の実行結果をずらっと表示します。 この結果の件数を取得するためにカウンタを付けたとします。 SET COUNT=0 FOR /F %%i IN ('SET') DO SET /A COUNT=%COUNT%+1 ECHO %COUNT% 上手く行きそうなのですが、結果は 1 が出力されます。 これは変数の“即時展開”というもので、 ループの中の %COUNT% が先に評価されてしまうので 結果的には次のような処理になってしまうためです。 SET COUNT=0 FOR /F %%i IN ('SET') DO SET /A

  • 1