2012-04-16 42 views
8

Ho il file di riga di comando qui sotto. Devo controllare un valore vuoto di una variabile. Non sto fornendo alcun argomento da riga di comando.Come verificare il valore vuoto nel file cmd?

@echo off 
@set PASSWORD= 
@set PORT=9001 
@set command=START 
if %PASSWORD% NEQ() GOTO MyLabel 

:MyLabel 
@set command=%command% -p%PASSWORD% 

@set command=%command% -i%PORT% 
@echo %command% 

Ho provato diverse opzioni, come il confronto con parentesi vuote (()), le stringhe vuote (""), ma nulla sembra funzionare. Mi dà il seguente output quando viene eseguito:

() era inaspettato in questo momento.

Sto usando Windows 7 x32. Qualcuno può aiutare, per favore?

risposta

9

che segue dovrebbe farlo:

if [%PASSWORD%] NEQ [] GOTO MyLabel 

Per ulteriori informazioni, vedere ss64.com.

+1

Wow! Ha funzionato come un fascino! Grazie! – ParagJ

+0

Stranamente, questo non funziona per me. 'SE [% NO_SUCH_VAR%] NEQ [] echo Non vuoto' effettivamente echeggia" Non vuoto ". Se la variabile è vuota, indefinita o definita e non vuota, il test restituisce sempre true. Ancora un altro comportamento strano di cmd.exe? – mivk

+0

@mivk I comportamenti della riga di comando e del file batch sono diversi ... –

10

Utilizzare IF DEFINED variable senza i segni di percentuale attorno alla variabile.

Testato in XP (32 bit) e Win7 x64:

SET PASSWORD= 
IF DEFINED PASSWORD (echo PASSWORD = %PASSWORD%) ELSE (echo PASSWORD is empty or undefined) 
IF DEFINED USERNAME (echo USERNAME = %USERNAME%) ELSE (echo USERNAME is empty or undefined) 
Problemi correlati