返回列表 发帖
大家比较下以下两个代码,看看 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%"=="" 则在空格也是空值进行判断时使用。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

返回列表