大家比较下以下两个代码,看看 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 inputCOPY |
| @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 inputCOPY |
在功能上:
1、defined “如果已定义环境变量,DEFINED 条件的作用跟 EXISTS 的一样,除了它取得一个环境变量,返回的结果是 true。”
它只有 真 与 假 两种情况,因此,判断变量是否为空,当然最基本的办法就是 if not defined var (echo not) else echo yes
2、相比较之下,if "%input%"=="" 则对空格比较敏感些,它可以将空格独立出来处理。
在互动时输入任意字符进行判断,输入空格表示值不存在,这样更符合平时的使用习惯。
文本是否为空的判断也一样,一个文本中只有一堆空格而没有其他任何字符,我们通常认为这个文本是空的,而非defined认为的文本不为空。
综上,defined在比较苛刻的有与无的判断时使用,而 if "%input%"=="" 则在空格也是空值进行判断时使用。 |