回答編集履歴

1

微修正と補足

2023/05/26 10:49

投稿

otn
otn

スコア84633

test 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" (
@@ -11,6 +11,13 @@
11
11
  両方の IF 文の %VAR% が、最初の IF 文を読み取ったときに展開されます。
12
12
  このため、メッセージは決して表示されません。
13
13
  複合文の中の IF では "before" と "after" が比較され、決して等しくはなりません。
14
+ ```
15
+ もっとコンパクトな例だと、
16
+ ```CMD
17
+ @echo off
18
+ set A=100
19
+ set A=200 & echo %A%
20
+ echo %A%
14
21
  ```
15
22
 
16
23
  解決方法としては、`set /?`のその次に書いてある方法で、