返回列表 发帖

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

作者:youxi01 转载请注明出处

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

用法示例1:生成不重复的四个2位数字
演示代码:
@echo off & setlocal enabledelayedexpansion
echo 四个随机数字为:
for /l %%i in (1 1 4) do (
     call :GetNum
     set num%%i=!var!
     echo !num%%i!)
pause>nul
:GetNum
set var=100%random:~-2%
set /a var=%var% %% 100  %=======这里用来消除类似 06 数字前面的0 ======%
if not defined %var% (%=========如果没有被定义过,则说明该数字没有重复=======%
     set "%var%=A"   %=========如果没定义,则定义该数字%
     goto :eof)       %=========跳出标签===============%
call :GetNum
COPY

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

用法示例2:检测用户输入是否为空(或者检测我们程序里的标志变量是否定义?)
示例代码:
@echo off
set "bathome=" %======清空变量======%
set /p bathome=请输入(可以直接回车):
echo.
if defined bathome (echo 你输入的值为%bathome%) else echo 你输入了空值!
pause>nulCOPY

第二个用法随风写字符的移动的时候领教过了。哈哈。
ㄗs:A good programming is 99% sweat and 1% coffee!--①個亾

============ >   hi.baidu.com/novaa   <============

TOP

有个缺点,不能检测含空格的变量名
技术问题请到论坛发帖求助!

TOP

回复 3# 的帖子

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

TOP

正在收集bat教程,非常感谢.

TOP

原帖由 youxi01 于 2008-1-3 07:43 发表
不是吧?!
看我的检测结果:请输入(可以直接回车):fdas df

你输入的值为fdas df


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

评分人数

技术问题请到论坛发帖求助!

TOP

很清新直观的学习了一下,谢谢大家

TOP

返回列表