Я пытаюсь определить и использовать переменную в командном файле. Похоже, все должно быть просто:
@echo off
set location = "bob"
echo We're working with "%location%"
Вывод, который я получаю, следующий:
We're working with ""
Что здесь происходит? Почему моя переменная не отображается?
Пространство перед =
интерпретируется как часть имени, а пробел после него (а также кавычки) интерпретируется как часть значения. Таким образом, для переменной, которую вы создали, можно ссылаться на %location %
. Если это не то, что вы хотите, удалите лишнее пространство в определении.
Пространства значительны. Вы создали переменную с именем (включая одинарные кавычки, добавленные для отображения местоположения пространства) '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
(ошибки, сделанные: space
и " "
)
/p
???
set /p
запрашивает пользователя и сохраняет ответ в указанной переменной. например, set /p name="What is your name? " & echo Hello, %name%.
@ECHO OFF
SET location = "bob"
ECHO We're working with "%location%"
Пожалуйста, удалите "" это с двух сторон переменной. Это будет работать нормально.
=
интерпретируется как часть имени, тогда на переменную нельзя ссылаться как%location%
, на нее следует ссылаться как%location %
. Это опечатка?