Estoy tratando de definir y usar una variable en un archivo por lotes. Parece que debería ser simple:
@echo off
set location = "bob"
echo We're working with "%location%"
El resultado que obtengo es el siguiente:
We're working with ""
¿Que está pasando aqui? ¿Por qué mi variable no se repite?
batch-file
cmd
environment-variables
Jamie Dixon
fuente
fuente
=
se interpreta como parte del nombre, entonces no se puede hacer referencia a la variable%location%
, se debe hacer referencia a ella como%location %
. ¿Es eso un error tipográfico?alias x = y
en * nix land?x = y
?Los espacios son significativos. Creó una variable denominada
'location '
con un valor de' "bob"'
. Nota: se agregaron comillas simples para mostrar la ubicación del espacio.Si desea cotizaciones en su valor, entonces su código debería verse así
Si no desea cotizaciones, entonces su código debería verse así
O mejor aún
La última sintaxis evita que los espacios finales involuntarios entren en el valor y también protege contra caracteres especiales como
&
|
etc.fuente
%
, y posiblemente!
si la expansión retrasada está habilitada. Pero si el valor contiene comillas, entonces debe preocuparse cuando para escapar caracteres como veneno|
,&
etc.entrada
location.bat
salida
(errores que has hecho:
space
y" "
)fuente
set /p
pregunta al usuario y almacena la respuesta en la variable especificada. por ejemplo,set /p name="What is your name? " & echo Hello, %name%.
set /p "varname"="text"
es incorrecta, crea una variable llamadalocation"
(¡con una comilla final!). Debería serset /p location="bob"
. Pero incluso entonces, ya no coincide con la pregunta