2012-05-11 22 views

Respuesta

398

El espacio anterior al = se interpreta como parte del nombre, y el espacio posterior (así como las comillas) se interpretan como parte del valor. Por lo tanto, se puede hacer referencia a la variable que ha creado con %location %. Si eso no es lo que quieres, elimina los espacios extra en la definición.

+0

Gracias Brian. Problema resuelto. –

+5

Si el espacio antes de '=' se interpreta como parte del nombre, entonces la variable * no se puede * hacer referencia como '% location%', se debe hacer referencia a ella como '% location%'. ¿Es eso un error tipográfico? –

+6

@Miserable Variable: Tienes razón; parece que la respuesta original fue víctima de una edición incorrecta. –

188

Los espacios son significativos. Creó una variable llamada 'location ' con un valor de ' "bob"'.

Si desea que las cotizaciones en su valor, entonces su código debe ser similar

set location="bob" 

Si no desea que las citas, a continuación, el código debe ser similar

set location=bob 

O mejor aún

set "location=bob" 

La última sintaxis evita que los espacios inadvertidos entren en el valor y también protege contra los mismos t caracteres especiales como & | etc.

+2

¿Hay inconvenientes para la última sintaxis? – Wolf

+1

@ Wolf - No, no hay inconveniente. Sin embargo, existe un límite para cuando es más efectivo. Siempre que el valor no contenga comillas, entonces casi todos los caracteres pueden aparecer en el valor sin preocuparse de escapar. Las excepciones son '%' y posiblemente '!' Si la expansión retrasada está habilitada. Pero si el valor contiene comillas, entonces debe preocuparse por cuándo escapar caracteres venenosos como '|', '&', etc. – dbenham

+1

esto parece ser lo mismo que establecer la variable de entorno en Windows. ¿Es esta la única forma de usar variables locales en scripts por lotes? – parasrish

4

entrada location.bat

@echo off 
cls 

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

salida

We're working with bob 

(errores u hecho: space y " ")

Cuestiones relacionadas