2012-05-11 16 views

risposta

398

Lo spazio prima dello = viene interpretato come parte del nome e lo spazio dopo di esso (oltre alle virgolette) viene interpretato come parte del valore. Quindi la variabile che hai creato può essere referenziata con %location %. Se quello non è quello che vuoi, rimuovi lo spazio extra (s) nella definizione.

+0

Grazie Brian. Problema risolto. –

+5

Se lo spazio precedente a '=' è interpretato come parte del nome, allora la variabile * non può * essere referenziata come '% posizione%', deve essere referenziata come '% posizione%'. È un errore di battitura? –

+6

@Misura modificabile: hai ragione; sembra che la risposta originale sia stata vittima di una modifica errata. –

188

Gli spazi sono significativi. Hai creato una variabile denominata 'location ' con un valore di ' "bob"'.

Se volete citazioni nel vostro valore, allora il codice dovrebbe essere simile

set location="bob" 

Se non si desidera che le citazioni, allora il codice dovrebbe essere simile

set location=bob 

O meglio ancora

set "location=bob" 

L'ultima sintassi impedisce agli spazi involontari di ottenere il valore e protegge anche i agains t caratteri speciali come & | ecc

+2

Ci sono degli svantaggi per l'ultima sintassi? – Wolf

+1

@ Wolf - No, non c'è un rovescio della medaglia. Tuttavia, c'è un limite a quando è più efficace. Finché il valore non contiene virgolette, quasi tutti i caratteri possono apparire nel valore senza doversi preoccupare dell'escaping. Le eccezioni sono '%', e possibilmente '!' Se l'espansione ritardata è abilitata. Ma se il valore contiene virgolette, allora devi preoccuparti di quando sfuggire i caratteri velenosi come '|', '&', ecc. – dbenham

+1

sembra essere uguale all'impostazione della variabile di ambiente in windows. È questo l'unico modo di utilizzare variabili locali negli script batch? – parasrish

4

ingresso location.bat

@echo off 
cls 

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

uscita

We're working with bob 

(errori u fatto: space e " ")

Problemi correlati