teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

微修正と補足

2023/05/26 10:49

投稿

otn
otn

スコア86341

answer CHANGED
@@ -1,5 +1,5 @@
1
1
  Windowsの`%`に依る環境変数展開は、一般のプログラミング言語の変数値参照とは異なります
2
- 展開は文の実行に先立って行われます。コマンドプロンプトでの`set /?`の説明から引用すると、
2
+ 展開は文の実行に先立って行単位で行われます。コマンドプロンプトでの`set /?`の説明から引用すると、
3
3
  ```text
4
4
  set VAR=before
5
5
  if "%VAR%" == "before" (
@@ -12,6 +12,13 @@
12
12
  このため、メッセージは決して表示されません。
13
13
  複合文の中の IF では "before" と "after" が比較され、決して等しくはなりません。
14
14
  ```
15
+ もっとコンパクトな例だと、
16
+ ```CMD
17
+ @echo off
18
+ set A=100
19
+ set A=200 & echo %A%
20
+ echo %A%
21
+ ```
15
22
 
16
23
  解決方法としては、`set /?`のその次に書いてある方法で、
17
24
  ```CMD