1 对普通的变量来讲,只要判断其值是否为空即可:
IF "%MyVar%"=="" ECHO MyVar is NOT defined.
如果变量有双引号("), 则变通一下即可:
IF [%MyVar%]==[] ECHO MyVar is NOT defined.
2 如果command 扩展开关打开时,可以使用 defined 命令来判断变量是否存在。
如:
IF DEFINED MyVar (ECHO MyVar IS defined) ELSE (ECHO MyVar is NOT defined)
3 扩展开关关闭时,最安全的判断方式:
如:
VERIFY OTHER 2>nul
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 ECHO Unable to enable extentsions
IF DEFINED MyVar (ECHO MyVar is defined) ELSE (ECHO MyVar is NOT defined)
ENDLOCAL
4 对于 hidden 或者 动态的变量如何判断呢?
如下code 可以测试:
Code
CLS
IF DEFINED Date (ECHO Date IS defined) ELSE (ECHO Date is NOT defined)
ECHO Date = %Date%
SET Date
PAUSE
SET Date=Some Other Value
IF DEFINED Date (ECHO Date IS defined) ELSE (ECHO Date is NOT defined)
ECHO Date = %Date%
SET Date
PAUSE
SET Date=
IF DEFINED Date (ECHO Date IS defined) ELSE (ECHO Date is NOT defined)
ECHO Date = %Date%
SET Date
其输出结果将是:
CLS
IF DEFINED Date (ECHO Date IS defined) ELSE (ECHO Date is NOT defined)
ECHO Date = %Date%
SET Date
PAUSE
SET Date=Some Other Value
IF DEFINED Date (ECHO Date IS defined) ELSE (ECHO Date is NOT defined)
ECHO Date = %Date%
SET Date
PAUSE
SET Date=
IF DEFINED Date (ECHO Date IS defined) ELSE (ECHO Date is NOT defined)
ECHO Date = %Date%
SET Date
C:\>IF DEFINED Date (ECHO Date IS defined ) ELSE (ECHO Date is NOT defined )
Date IS defined
C:\>ECHO Date = 06/06/2008
Date = 06/06/2008
C:\>SET Date
Environment variable Date not defined
C:\>PAUSE
Press any key to continue . . .
C:\>SET Date=Some Other Value
C:\>IF DEFINED Date (ECHO Date IS defined ) ELSE (ECHO Date is NOT defined )
Date IS defined
C:\>ECHO Date = Some Other Value
Date = Some Other Value
C:\>SET Date
Date=Some Other Value
C:\>PAUSE
Press any key to continue . . .
C:\>SET Date=
C:\>IF DEFINED Date (ECHO Date IS defined ) ELSE (ECHO Date is NOT defined )
Date IS defined
C:\>ECHO Date = 06/06/2008
Date = 06/06/2008
C:\>SET Date
Environment variable Date not defined
如是,在此只能使用如下的判断方法:
SET Date >NUL 2>&1
IF ERRORLEVEL 1 (
ECHO Date still has its dynamic system value
) ELSE (
ECHO Date has been set with a static value
)