Определение и использование переменной в командном файле

Я пытаюсь определить и использовать переменную в командном файле. Похоже, все должно быть просто:

<code>@echo off

set location = "bob"
echo We're working with "%location%"
</code>

Вывод, который я получаю, следующий:

<code>We're working with ""
</code>

Что здесь происходит? Почему моя переменная не является эхом?

Ответы на вопрос(3)

Решение Вопроса

= интерпретируется как часть имени, а пробел после него (как и кавычки) интерпретируется как часть значения. Таким образом, на созданную вами переменную можно ссылаться с помощью%location %. Если это не то, что вам нужно, удалите лишние пробелы в определении.

 Basic08 июл. 2016 г., 20:28
@ Falaque В отличие отalias x = y в * никс ленд?
 Miserable Variable11 дек. 2013 г., 23:24
Если до @ мес= интерпретируется как часть имени, тогда переменнаяне могу будет упоминаться как%location%, на него нужно ссылаться как%location %. Это опечатка?
 Brian Nixon20 дек. 2013 г., 19:16
@ Miserable Variable: Вы правы; кажется, оригинальный ответ стал жертвой неправильного редактирования.
 Falaque11 сент. 2015 г., 08:00
Так вот, что MS пришла с
 phuclv03 апр. 2018 г., 17:15
@ Falaque, что, по вашему мнению, сделает bash при запускеx = y?

в одинарные кавычки, чтобы показать расположение пространства)'location ' со значением' "bob"'.

Если вам нужны кавычки в вашем значении, то ваш код должен выглядеть как

set location="bob"

Если вам не нужны кавычки, тогда ваш код должен выглядеть как

set location=bob

Или еще лучше

set "location=bob"

Последний синтаксис предотвращает случайное попадание конечных пробелов в значение, а также защищает от специальных символов, таких как & | так далее

 dbenham01 дек. 2015 г., 17:01
@ Wolf - Нет, недостатков нет. Тем не менее, есть предел тому, когда это наиболее эффективно. Пока значение не содержит кавычек, в нем могут появляться практически любые символы, не беспокоясь о экранировании. Исключения составляют% и, возможно,! если включено отложенное расширение. Но если значение содержит кавычки, вам следует задуматься о том, когда экранировать такие символы, как|, &, так далее
 Wolf01 дек. 2015 г., 16:02
Есть ли недостатки у последнего синтаксиса?
 parasrish16 июн. 2016 г., 11:01
Это похоже на установку переменной среды в Windows. Это единственный способ использования локальных переменных в пакетных сценариях?

inputlocation.bat

@echo off
cls

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

выхо

We're working with bob

(ошибки, которые ты сделал:space а также" ")

 Robert Mooney29 июл. 2018 г., 23:39
set /p запрашивает пользователя и сохраняет ответ в указанной переменной. например,set /p name="What is your name? " & echo Hello, %name%.
 highmaintenance16 июл. 2018 г., 15:13
Что/p ???
 jeb06 мар. 2019 г., 17:00
-1, синтаксисset /p "varname"="text" неправильно, он создает переменную с именемlocation" (с завершающей цитатой!). Должен бытьset /p location="bob". Но даже тогда это больше не соответствует вопросу

Ваш ответ на вопрос