回答編集履歴
1
微修正と補足
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 /?`のその次に書いてある方法で、
|