2013-10-18 13 views
22

Sto eseguendo alcune semplici impostazioni di una variabile in un file BAT. Non sta impostando la variabile. Non ci sono costrutti strani, è semplice sostituzione di variabili usando lo stesso nome di variabile. Ho ridotto il file BAT ad una semplice prova di versione di concetto:Variabile file set batch Variabile non funzionante

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

E l'output mostra che nessuno dei comandi SET sembra funzionare. Che diamine mi manca qui. Ho scritto file BAT per anni e non l'ho mai visto prima. Ecco l'output di esecuzione di questo 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> 

mi aspetto comanda la prima e la terza ECHO per visualizzare i valori di "nessun valore" e "Nuovo valore". Che diavolo sta succedendo?

+15

Nessuno ha detto che è necessario inserire spazi tra Testvar e il segno di uguale. – jeb

+0

Non ne siamo sicuri, ma forse è necessario 'EnableDelayedExpansion' – mavrosxristoforos

+9

Spazi intorno ai segni uguali ... Sapevo che era qualcosa di veramente stupido. Grazie. –

risposta

37

Il problema sono gli spazi attorno al segno di uguale. Questo dovrebbe fare quello che vuoi.

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