2012-04-16 23 views
8

Aşağıdaki komut satırı dosyasına sahibim. Değişkenin boş bir değerini kontrol etmem gerekiyor. Herhangi bir komut satırı argümanı sağlamadım. Boş değer cmd dosyasında nasıl kontrol edilir?

@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% 

Böyle bir boş parantez ( ()), boş dizeler ( "") ile karşılaştırarak gibi çeşitli seçenekleri denedik, ama işe yaramış gibi görünüyor. Çalıştığı zaman aşağıdaki çıktıyı verir:

() şu an beklenmedik bir durumdu.

Windows 7 x32 kullanıyorum. Herkes yardım edebilir mi?

cevap

9

şu yapmalı:

if [%PASSWORD%] NEQ [] GOTO MyLabel 

fazla bilgi için, ss64.com bakın.

+1

Vay! Bir çekicilik gibi çalıştı! Teşekkürler! – ParagJ

+0

Strangely, bu benim için çalışmıyor. 'IF [% NO_SUCH_VAR%] NEQ [] echo Not boş 'aslında boş değil" yankılanıyor ". Değişkenin boş, tanımsız veya tanımlanmış olup olmadığı, testin her zaman doğru döner. Yine de cmd.exe başka garip davranış? – mivk

+0

@mivk Komut satırı ve toplu iş dosyasının davranışları farklı ... –

10

Değişken yüzde işareti olmadan IF DEFINED variable kullanın. XP (32 bit) ve Win7 x64 test edilmiştir

:

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) 
İlgili konular