2012-05-11 6 views

Antwort

398

Das Leerzeichen vor dem = wird als Teil des Namens interpretiert, und das Leerzeichen danach (sowie die Anführungszeichen) werden als Teil des Werts interpretiert. So kann die Variable, die Sie erstellt haben, mit %location % referenziert werden. Wenn Sie das nicht möchten, entfernen Sie die zusätzlichen Leerzeichen in der Definition.

+0

Dank Brian. Problem gelöst. –

+5

Wenn das Leerzeichen vor '=' als Teil des Namens interpretiert wird, dann kann die Variable * nicht als '% location%' referenziert werden, es muss als '% location% 'referenziert werden. Ist das ein Tippfehler? –

+6

@Miserable Variable: Sie haben Recht; es scheint, dass die ursprüngliche Antwort Opfer einer falschen Bearbeitung wurde. –

188

Die Räume sind signifikant. Sie haben eine Variable mit dem Namen 'location ' mit dem Wert ' "bob"' erstellt.

Wenn Sie Anführungszeichen in Ihrem Wert, dann sollte Ihr Code aussehen

set location="bob" 

Wenn Sie Anführungszeichen nicht wollen, dann sollten Sie den Code aussehen

set location=bob 

Oder noch besser

set "location=bob" 

Die letzte Syntax verhindert, dass unbeabsichtigte Leerzeichen in den Wert gelangen, und schützt auch gegen s t Sonderzeichen wie & | usw.

+2

Gibt es irgendwelche Nachteile für die letzte Syntax? – Wolf

+1

@Wolf - Nein, es gibt keinen Nachteil. Es gibt jedoch eine Grenze dafür, wann es am effektivsten ist. Solange der Wert keine Anführungszeichen enthält, können fast alle Zeichen im Wert erscheinen, ohne dass Sie sich Gedanken über das Escaping machen müssen. Die Ausnahmen sind '%' und möglicherweise '!', Wenn die verzögerte Erweiterung aktiviert ist. Wenn der Wert jedoch Anführungszeichen enthält, müssen Sie sich Gedanken darüber machen, wann Sie die Zeichen "|", "&", usw. entkommen können. – dbenham

+1

Dies scheint derselbe zu sein wie die Einstellung der Umgebungsvariablen in Windows. Ist dies die einzige Möglichkeit, lokale Variablen in Batch-Skripten zu verwenden? – parasrish

4

Eingang location.bat

@echo off 
cls 

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

Ausgang

We're working with bob 

(Fehler u getan: space und " ")

Verwandte Themen