web-dev-qa-db-fra.com

Définir et utiliser une variable dans un fichier batch

J'essaie de définir et d'utiliser une variable dans un fichier de commandes. Il semble que cela devrait être simple:

@echo off

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

Le résultat obtenu est le suivant:

We're working with ""

Que se passe t-il ici? Pourquoi ma variable n'est-elle pas répercutée?

410
Jamie Dixon

L'espace précédant le = est interprété comme faisant partie du nom et l'espace qui le suit (ainsi que les guillemets) est interprété comme faisant partie de la valeur. Ainsi, la variable que vous avez créée peut être référencée avec %location %. Si ce n’est pas ce que vous voulez, supprimez les espaces supplémentaires dans la définition.

522
Brian Nixon

Les espaces sont importants. Vous avez créé une variable nommée (entre guillemets simples ajoutés pour indiquer l'emplacement de l'espace) 'location ' avec la valeur ' "bob"'.

Si vous voulez des citations dans votre valeur, alors votre code devrait ressembler à

set location="bob"

Si vous ne voulez pas de guillemets, votre code devrait ressembler à

set location=bob

Ou mieux encore

set "location=bob"

La dernière syntaxe empêche les espaces de fin par inadvertance d'entrer dans la valeur et protège également contre les caractères spéciaux tels que & | etc.

246
dbenham

entrée location.bat

@echo off
cls

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

sortie

We're working with bob

(erreurs commises: space et " ")

4
Philip