判断某变量是否定义

      在批处理中, 很多时候可能需要判断某变量是否定义。 而普通的变量和特定的隐藏变量的判断方法又有些不一样。 故总结如下:
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 可以测试:

ContractedBlock.gif ExpandedBlockStart.gif 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
      其输出结果将是:
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
)

转载于:https://www.cnblogs.com/joechen/archive/2009/09/09/1563238.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值