2012-04-16 18 views
8

Mam plik wiersza poleceń poniżej. Muszę sprawdzić pustą wartość zmiennej. Nie dostarczam żadnych argumentów wiersza poleceń.Jak sprawdzić pustą wartość w pliku 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% 

Próbowałem kilka opcji, takich jak porównanie z pustymi nawiasami (()), pustych strunach (""), ale nic nie wydaje się działać. Wyświetla następujący wynik:

() był nieoczekiwany w tym momencie.

Używam systemu Windows 7 x32. Czy ktoś może ci pomóc?

Odpowiedz

9

Następujące powinien to zrobić:

if [%PASSWORD%] NEQ [] GOTO MyLabel 

Aby uzyskać więcej informacji, zobacz ss64.com.

+1

Wow! To działało jak czar! Dzięki! – ParagJ

+0

O dziwo, to nie działa dla mnie. 'JEŻELI [% NO_SUCH_VAR%] NEQ [] echo Not empty' faktycznie echa" Not empty ". Niezależnie od tego, czy zmienna jest pusta, niezdefiniowana czy zdefiniowana, a nie pusta, test zawsze zwraca wartość true. Kolejne dziwne zachowanie cmd.exe? – mivk

+0

@mivk Zachowania wiersza poleceń i pliku wsadowego są różne ... –

10

Użyj IF DEFINED variable bez procentu znaków wokół zmiennej.

Testowane XP (32bit) i 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) 
Powiązane problemy