27

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>

1 番目と 3 番目の ECHO コマンドで、「No Value」と「New value」という値が表示されるはずです。一体何が起こっているのですか?

4

1 に答える 1

43

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

set TESTVAR="No Value"
ECHO var = %TESTVAR%
set TESTVAR=""
ECHO var = %TESTVAR%
set TESTVAR="New value"
ECHO var = %TESTVAR%
于 2013-10-18T19:17:46.330 に答える