web-dev-qa-db-ja.com

バッチファイルで変数を定義して使用する

バッチファイルで変数を定義して使用しようとしています。それはそれが簡単であるべきであるように見えます:

@echo off

set location = "bob"
echo We're working with "%location%"

私が得る出力は次のとおりです。

We're working with ""

何が起きてる?変数がエコーされないのはなぜですか?

394
Jamie Dixon

=の前のスペースは名前の一部として解釈され、その後のスペース(および引用符)は値の一部として解釈されます。したがって、作成した変数は%location %で参照できます。それでも問題が解決しない場合は、定義から余分なスペースを削除します。

507
Brian Nixon

スペースが重要です。 'location 'という値を持つ' "bob"'という名前の(スペースの場所を示すために追加された単一引用符で囲む)変数を作成しました。

値に引用符が必要な場合は、コードは次のようになります。

set location="bob"

引用符が不要な場合は、コードは次のようになります。

set location=bob

それ以上

set "location=bob"

最後の構文は、不用意な末尾のスペースが値に入るのを防ぎ、また&|のような特殊文字からも保護します。等.

235
dbenham

入力location.bat

@echo off
cls

set /p "location"="bob"
echo We're working with %location%
pause

出力

We're working with bob

(失敗しました:space" "

6
Philip