[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
大家比较下以下两个代码,看看 defined 与 if "%input%" == "" 的区别:
  1. @echo off
  2. :input
  3. cls
  4. set /p input=直接回车返回,输入【Y】结束:
  5. if defined input echo 你将返回开始!&pause&goto input
  6. if /i "%input%"=="Y" echo Over&pause&exit
  7. echo 输入错误,请重试!
  8. pause&goto input
复制代码

  1. @echo off
  2. :input
  3. cls
  4. set /p input=直接回车返回,输入【Y】结束:
  5. if "%input%"=="" echo 你将返回开始!&pause&goto input
  6. if /i "%input%"=="Y" echo Over&pause&exit
  7. echo 输入错误,请重试!
  8. pause&goto input
复制代码

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

TOP

返回列表