找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 30716|回复: 7

[原创] 批处理if defined的应用示例

[复制链接]
发表于 2007-12-31 21:22:49 | 显示全部楼层 |阅读模式
作者:youxi01 转载请注明出处

很多新手对于 if defined的用法可能没有了解过,也不太清楚它的功能,这里结合具体的例子做个简单的介绍。
defined 为E文,翻译过来即为 “定义”的意思,if defined可以理解为:如果 xx 已经被定义,则....

用法示例1:生成不重复的四个2位数字
演示代码:

  1. @echo off & setlocal enabledelayedexpansion
  2. echo 四个随机数字为:
  3. for /l %%i in (1 1 4) do (
  4.      call :GetNum
  5.      set num%%i=!var!
  6.      echo !num%%i!)
  7. pause>nul
  8. :GetNum
  9. set var=100%random:~-2%
  10. set /a var=%var% %% 100  %=======这里用来消除类似 06 数字前面的0 ======%
  11. if not defined %var% (%=========如果没有被定义过,则说明该数字没有重复=======%
  12.      set "%var%=A"   %=========如果没定义,则定义该数字%
  13.      goto :eof)       %=========跳出标签===============%
  14. call :GetNum
复制代码

当然,实现的方法很多,但是这个方法速度比较快,比较方便而已(不过也不是最好的...)

用法示例2:检测用户输入是否为空(或者检测我们程序里的标志变量是否定义?)
示例代码:

  1. @echo off
  2. set "bathome=" %======清空变量======%
  3. set /p bathome=请输入(可以直接回车):
  4. echo.
  5. if defined bathome (echo 你输入的值为%bathome%) else echo 你输入了空值!
  6. pause>nul
复制代码
发表于 2008-1-1 12:52:16 | 显示全部楼层
第二个用法随风写字符的移动的时候领教过了。哈哈。
发表于 2008-1-3 02:29:38 | 显示全部楼层
有个缺点,不能检测含空格的变量名
 楼主| 发表于 2008-1-3 07:43:33 | 显示全部楼层

回复 3# 的帖子

不是吧?!
看我的检测结果:
  1. 请输入(可以直接回车):fdas df

  2. 你输入的值为fdas df
复制代码
发表于 2008-1-5 15:31:47 | 显示全部楼层
正在收集bat教程,非常感谢.
发表于 2008-1-5 15:37:17 | 显示全部楼层
原帖由 youxi01 于 2008-1-3 07:43 发表
不是吧?!
看我的检测结果:请输入(可以直接回车):fdas df

你输入的值为fdas df


能用 if defined  检测含空格的变量名是否被定义过???
给个代码看看?

评分

参与人数 1技术 +1 收起 理由
Hello123World + 1 乐于助人

查看全部评分

发表于 2011-8-21 21:45:26 | 显示全部楼层
很清新直观的学习了一下,谢谢大家
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 05:00 , Processed in 0.011495 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表