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%"
La sortie que j'obtiens est la suivante:
We're working with ""
Que se passe t-il ici? Pourquoi ma variable n'est-elle pas reproduite?
batch-file
cmd
environment-variables
Jamie Dixon
la source
la source
=
est interprété comme faisant partie du nom, la variable ne peut pas être référencée comme%location%
, elle doit être référencée comme%location %
. Est-ce une faute de frappe?alias x = y
in * nix land?x = y
?Les espaces sont importants. Vous avez créé une variable nommée
'location '
avec une valeur de' "bob"'
. Remarque - des guillemets simples ont été ajoutés pour montrer l'emplacement de l'espace.Si vous voulez des guillemets dans votre valeur, alors votre code devrait ressembler à
Si vous ne voulez pas de guillemets, votre code devrait ressembler à
Ou mieux encore
La dernière syntaxe empêche les espaces de fin involontaires d'entrer dans la valeur et protège également contre les caractères spéciaux comme
&
|
etc.la source
%
, et éventuellement!
si l'expansion retardée est activée. Mais si la valeur ne contient entre guillemets, alors vous devez vous inquiéter quand échapper les caractères de poison comme|
,&
, etc.contribution
location.bat
production
(erreurs que vous avez faites:
space
et" "
)la source
set /p
invite l'utilisateur et stocke la réponse dans la variable spécifiée. par exemple,set /p name="What is your name? " & echo Hello, %name%.
set /p "varname"="text"
est erronée, elle crée une variable nomméelocation"
(avec un guillemet de fin!). Ça devrait l'êtreset /p location="bob"
. Mais même alors, cela ne correspond plus à la question