大家比较下以下两个代码,看看 defined 与 if "%input%" == "" 的区别:
- @echo off
- :input
- cls
- set /p input=直接回车返回,输入【Y】结束:
- if defined input echo 你将返回开始!&pause&goto input
- if /i "%input%"=="Y" echo Over&pause&exit
- echo 输入错误,请重试!
- pause&goto input
复制代码
- @echo off
- :input
- cls
- set /p input=直接回车返回,输入【Y】结束:
- if "%input%"=="" echo 你将返回开始!&pause&goto input
- if /i "%input%"=="Y" echo Over&pause&exit
- echo 输入错误,请重试!
- pause&goto input
复制代码
在功能上:
1、defined “如果已定义环境变量,DEFINED 条件的作用跟 EXISTS 的一样,除了它取得一个环境变量,返回的结果是 true。”
它只有 真 与 假 两种情况,因此,判断变量是否为空,当然最基本的办法就是 if not defined var (echo not) else echo yes
2、相比较之下,if "%input%"=="" 则对空格比较敏感些,它可以将空格独立出来处理。
在互动时输入任意字符进行判断,输入空格表示值不存在,这样更符合平时的使用习惯。
文本是否为空的判断也一样,一个文本中只有一堆空格而没有其他任何字符,我们通常认为这个文本是空的,而非defined认为的文本不为空。
综上,defined在比较苛刻的有与无的判断时使用,而 if "%input%"=="" 则在空格也是空值进行判断时使用。 |