web-dev-qa-db-ja.com

バッチファイルセット変数が機能しない

BATファイル内の変数の簡単な設定を行っています。変数を設定していません。奇妙なコンストラクトはありません。同じ変数名を使用した単純な変数置換です。 BATファイルを単純な概念実証バージョンに縮小しました。

set TESTVAR = "No Value"
ECHO var = %TESTVAR%
set TESTVAR = ""
ECHO var = %TESTVAR%
set TESTVAR = "New value"
ECHO var = %TESTVAR%

また、出力は、SETコマンドが機能していないように見えることを示しています。ここで何が欠けているのでしょう。私は何年もBATファイルを書いてきましたが、これを見たことはありません。このテストの実行結果は次のとおりです。

C:\Users\rs02130\Desktop>test

C:\Users\rs02130\Desktop>set TESTVAR = "No Value"

C:\Users\rs02130\Desktop>ECHO var =
var =

C:\Users\rs02130\Desktop>set TESTVAR = ""

C:\Users\rs02130\Desktop>ECHO var =
var =

C:\Users\rs02130\Desktop>set TESTVAR = "New value"

C:\Users\rs02130\Desktop>ECHO var =
var =
C:\Users\rs02130\Desktop>

最初と3番目のECHOコマンドで「値なし」と「新しい値」の値が表示されることを期待しています。一体何が起こっているのですか?

23

問題は等号の周りのスペースです。これはあなたが望むことをするはずです。

set TESTVAR="No Value"
ECHO var = %TESTVAR%
set TESTVAR=""
ECHO var = %TESTVAR%
set TESTVAR="New value"
ECHO var = %TESTVAR%
39
Scott Beeson