KAKU KAKU SHIKA ZIKA ┏┫゜Ⅲ゜┣┛
田舎から上京してシステムエンジニアをしています。東京タワーに感動した( ;∀;)
[19] [18] [17] [16] [15] [14] [13] [12] [11] [10] [9]
[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
IF文の中で環境変数が更新されない
以下を実行すると、、、
set STR=開始します
IF "%STR%"="開始します" (
set STR=中断します
echo %STR%
)
「開始します」が表示された。予想外です・・・(-。-;
調べると、環境変数はテキストを読み込むときに展開されるため、
上記の例だと、IF文が終わった後(最後の括弧の次の分を読み込むとき)に、
「STR=中断します」が有効になるらしい。
つまり、
set STR=開始します
IF "%STR%"="開始します" (
set STR=中断します
echo %STR%
)
調べると、環境変数はテキストを読み込むときに展開されるため、
上記の例だと、IF文が終わった後(最後の括弧の次の分を読み込むとき)に、
「STR=中断します」が有効になるらしい。
つまり、
set STR=開始します
IF "%STR%"="開始します" (
set STR=中断します
)
echo %STR%
IF "%STR%"="開始します" (
set STR=中断します
)
echo %STR%
とすれば、「中断します」が表示される。ふーむ(´ー`)
ちなみに遅延環境変数の展開を使えば、最初の例の場合でも期待通りの動きになる。
(遅延環境変数を有効にするには、コマンドプロンプトの起動時に「/v:on」を指定する必要がある)
ちなみに遅延環境変数の展開を使えば、最初の例の場合でも期待通りの動きになる。
(遅延環境変数を有効にするには、コマンドプロンプトの起動時に「/v:on」を指定する必要がある)
set STR=開始します
IF "%STR%"="開始します" (
set STR=中断します
echo %!STR!%
)
IF "%STR%"="開始します" (
set STR=中断します
echo %!STR!%
)
環境変数を呼ぶときに「!」で囲むようにすると、「中断します」が表示される。
※遅延環境変数の展開について詳しくは「set /?」参照
※遅延環境変数の展開について詳しくは「set /?」参照
PR