2012-04-16 3 views
8

私は以下のコマンドラインファイルを持っています。私は変数の空の値をチェックする必要があります。私はコマンドライン引数を提供していません。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% 

私はそのような空の括弧(())、空の文字列("")との比較など、いくつかのオプションを試してみましたが、何も動作していないようにみえます。実行時に次の出力が表示されます。

()はこの時点では予期せぬものでした。

私はWindows 7 x32を使用しています。誰でも助けてくれますか?

答えて

9

以下は、それを行う必要があります。

if [%PASSWORD%] NEQ [] GOTO MyLabel 

詳細情報については、ss64.comを参照してください。

+1

うわー!それは魅力のように働いた!ありがとう! – ParagJ

+0

奇妙なことに、これは私のためには機能しません。 'IF [%NO_SUCH_VAR%] NEQ [] echo not empty'は実際には"空ではない "とエコーします。変数が空でも、未定義でも、定義されていても空でない変数であれ、常にtrueを返します。 cmd.exeのさらに別の奇妙な動作? – mivk

+0

@mivkコマンドラインとバッチファイルの動作は異なります... –

10

IF DEFINED variableには、変数の前後にパーセント記号を付けないでください。

XP(32ビット)と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)