web-dev-qa-db-fra.com

La variable d'ensemble de fichiers de commandes ne fonctionne pas

Je fais un réglage simple d'une variable dans un fichier BAT. Il ne s'agit pas de définir la variable. Il n'y a pas de constructions étranges, c'est une simple substitution de variable utilisant le même nom de variable. J'ai réduit le fichier BAT à une version simple de preuve de concept:

set TESTVAR = "No Value"
ECHO var = %TESTVAR%
set TESTVAR = ""
ECHO var = %TESTVAR%
set TESTVAR = "New value"
ECHO var = %TESTVAR%

Et la sortie montre qu'aucune des commandes SET ne semble fonctionner. Qu'est-ce que je manque ici. J'écris des fichiers BAT depuis des années et je n'ai jamais vu ça auparavant. Voici le résultat de l'exécution de ce test:

C:\Users\rs02130\Desktop>test

C:\Users\rs02130\Desktop>set TESTVAR = "No Value"

C:\Users\rs02130\Desktop>ECHO var =
var =

C:\Users\rs02130\Desktop>set TESTVAR = ""

C:\Users\rs02130\Desktop>ECHO var =
var =

C:\Users\rs02130\Desktop>set TESTVAR = "New value"

C:\Users\rs02130\Desktop>ECHO var =
var =
C:\Users\rs02130\Desktop>

Je m'attends à ce que les première et troisième commandes ECHO affichent les valeurs "Aucune valeur" et "Nouvelle valeur". Que diable se passe t'il?

23
Richard Schaefer

Le problème est les espaces autour du signe égal. Cela devrait faire ce que vous voulez.

set TESTVAR="No Value"
ECHO var = %TESTVAR%
set TESTVAR=""
ECHO var = %TESTVAR%
set TESTVAR="New value"
ECHO var = %TESTVAR%
39
Scott Beeson