バッチファイルで変数を定義して使用しようとしています。シンプルなようです:
@echo off
set location = "bob"
echo We're working with "%location%"
私が得る出力は次のとおりです:
We're working with ""
何が起きてる?なぜ変数がエコーされないのですか?
バッチファイルで変数を定義して使用しようとしています。シンプルなようです:
@echo off
set location = "bob"
echo We're working with "%location%"
私が得る出力は次のとおりです:
We're working with ""
何が起きてる?なぜ変数がエコーされないのですか?
回答:
スペースは重要です。あなたは、という名前の変数を作成'location '
の値とを
' "bob"'。注-スペースの場所を示すために、単一引用符で囲むことが追加されました。
値に引用符が必要な場合、コードは次のようになります。
set location="bob"
引用符が不要な場合、コードは次のようになります。
set location=bob
またはもっと良い
set "location=bob"
最後の構文は、不注意による後続スペースが値に入るのを防ぎ、また、& |などの特殊文字から保護します。
%、おそらく!遅延拡張が有効になっている場合。値は引用符が含まれていない場合でも、その後、次のような毒の文字エスケープする際に心配しなければならない|、&など
入力 location.bat
@echo off
cls
set /p "location"="bob"
echo We're working with %location%
pause
出力
We're working with bob
(uは行わミス:spaceと" ")
set /pユーザーにプロンプトを表示し、指定された変数に回答を保存します。例set /p name="What is your name? " & echo Hello, %name%.
set /p "varname"="text"が間違っている、という名前の変数が作成されますlocation"(末尾に引用符が付いています!)。それはあるはずですset /p location="bob"。しかし、それでも、それはもう質問と一致しません
=が名前の一部として解釈される場合、変数はとして参照できず%location%、として参照する必要があります%location %。それはタイプミスですか?