Estou tentando definir e usar uma variável em um arquivo em lotes. Parece que deve ser simples:
@echo off
set location = "bob"
echo We're working with "%location%"
A saída que recebo é a seguinte:
We're working with ""
O que está acontecendo aqui? Por que minha variável não está sendo ecoada?
batch-file
cmd
environment-variables
Jamie Dixon
fonte
fonte
=
for interpretado como parte do nome, a variável não poderá ser referenciada como%location%
, ela deverá ser referenciada como%location %
. Isso é um erro de digitação?alias x = y
terra * nix?x = y
?Os espaços são significativos. Você criou uma variável nomeada
'location '
com um valor de' "bob"'
. Nota - aspas simples anexadas foram adicionadas para mostrar a localização do espaço.Se você deseja aspas no seu valor, seu código deve se parecer com
Se você não quiser aspas, seu código deve parecer
Ou melhor ainda
A última sintaxe impede que espaços à direita inadvertidos cheguem ao valor e também protege contra caracteres especiais como
&
|
etc.fonte
%
e, possivelmente,!
se a expansão atrasada estiver ativada. Mas, se o valor não contém aspas, então você deve se preocupar quando para escapar caracteres veneno como|
,&
, etc.entrada
location.bat
resultado
(erros que você fez:
space
e" "
)fonte
set /p
solicita ao usuário e armazena a resposta na variável especificada. por exemplo,set /p name="What is your name? " & echo Hello, %name%.
set /p "varname"="text"
está incorreta, ela cria uma variável chamadalocation"
(com uma citação à direita!). Deveria serset /p location="bob"
. Mas, mesmo assim, ele não coincide com a questão mais