[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[原创] [批处理命令一日一教学](4)条件判断:if

[一日一教学]批处理系列帖子索引 http://www.bathome.net/thread-2576-1-1.html

标题:一日一教学系列4_条件判断:if
首发地址:http://bbs.bathome.net/thread-2530-1-1.html
发表日期:2008.11.14
更新日期:无

上一篇:内容重定向:>和>> http://bbs.bathome.net/thread-2516-1-1.html
下一篇:流程跳转:goto http://bbs.bathome.net/thread-2574-1-1.html

  if用于条件判断,适用于以下情形:

  1、判断驱动器、文件或文件夹是否存在,用 if exist 语句;
  2、判断某两个字符串是否相等,用 if "字符串1"=="字符串2" 语句;
  3、判断某两个数值是否相等,用 if 数值1 equ 数值2 语句;
  4、判断某个变量是否已经被赋值,用 if defined str 语句;

  if语句的完整格式是这样的:if 条件表达式 (语句1) else (语句2),它的含义是:如果条件表达式成立,那么,就执行语句1,否则,将执行语句2。

  对于以上四种情形,可以分别使用如下代码:

  1、if exist d:\test.txt (echo D盘下有test.txt存在) else (echo D盘下不存在test.txt)
  2、if "abc"=="xyz" (echo 字符串abc等于字符串xyz) else (echo 字符串abc不等于字符串xyz)
  3、if 1 equ 2 (echo 1等于2) else (echo 1不等于2)
  4、if defined str (echo 变量str已经被赋值,其值为%str%) else (echo 变量str的值为空)

  判断字符串是否相等的时候,if会区分大小写,比如,单纯的if语句会认为字符串abc和字符串Abc不相同,若不想区分大小写,则需要添加 /i 开关,使用 if /i "字符串1"=="字符串2" 的格式;另外,等于符号是连续的"=="而非单独的"="。

  判断两个数值之间的大小关系,除了等于用equ之外,还有其他的关系符号,所有适用于if语句的关系符号见下表:


中文含义

关系符

英文解释

等于

equ

equal

大于

gtr

greater than

大于或等于

geq

greater than or equal

小于

lss

less than

小于或不等于

leq

less than or equal

不等于

neq

no equal


  if语句还有一个精简格式:if 条件表达式 语句,它的含义是:如果条件表达式成立,将执行语句,否则,什么也不做。

多层 if 嵌套的语法举例:
  1. if exist a.txt (
  2.     if exist 1.txt (
  3.         echo 存在 a.txt 和 1.txt
  4.     ) else (
  5.         echo 存在 a.txt 但是不存在 1.txt
  6.     )
  7. ) else if exist b.txt (
  8.     echo 不存在 a.txt 但是存在 b.txt
  9. ) else (
  10.     echo 不存在 a.txt 和 b.txt
  11. )
复制代码
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

建议楼主在文章的两头添加[code][/code]

TOP

写个例子,便于大家理解

  1. @echo off
  2. @mode con cols=40 lines=17
  3. if exist c:\1.txt start cmd.exe&&echo 存在1.txt
  4. echo.&echo.&echo.&echo.
  5. pause
复制代码

TOP

回复 2楼 的帖子

加上code以后,虽然便于大家复制,但是不利于排版。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

判断某两个数值是否相等,用 if 数值1 equ 数值2 语句;

注意进制。
  1. if 017 equ 15 echo YES
  2. if 0x34 equ 52 echo YES
  3. if 045 equ 0x25 echo YES
  4. pause>nul
复制代码
论坛标题管理观察员

TOP

1. else 好像必须和if写在同一行,不然报错,因为CMD把else当作一条命令了。
2. else 后面的代码和( )括号好像都得单独一行
不知道说得对不对。

TOP

回复 6楼 的帖子

  1. @echo off
  2. if exist C:\Batcher.txt (
  3.   echo 哈哈
  4. ) else (
  5.   echo 嘿嘿
  6. )
  7. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

那个leq的中文含义应该是“小于或等于”吧,LZ貌似写错了。

TOP

原帖由 nanyi 于 2008-12-22 12:31 发表
那个leq的中文含义应该是“小于或等于”吧,LZ貌似写错了。

确实是小于或等于

TOP

没看懂 能教一下吗?

比如 我需要判断输入0 1 2 等数值 来决定执行什么命令
那我该怎么写?

TOP

大家别见笑哈,帮我该一下使得此批处理能成功执行

  1. @echo off
  2. set /p s=请输入1 或 2   
  3. echo %s%
  4. if "s"=="1" goto a
  5. if "s"=="2" goto b
  6. :a
  7. echo 你输入的是1
  8. pause
  9. exit
  10. :b
  11. echo 你输入的是2
  12. pause
  13. exit
复制代码

TOP

你的代码可以执行啊 ? 有什么问题吗?

TOP

原帖由 xiong8707 于 2008-12-25 20:45 发表
@echo off
set /p s=请输入1 或 2   
echo %s%
if "s"=="1" goto a
if "s"=="2" goto b
:a
echo 你输入的是1
pause
exit

:b
echo 你输入的是2
pause
exit
  1. @echo off
  2. set /p s=请输入1 或 2   
  3. echo %s%
  4. if %s% equ 1 goto a
  5. if %s% equ 2 goto b
  6. :a
  7. echo 你输入的是1
  8. pause
  9. exit
  10. :b
  11. echo 你输入的是2
  12. pause
  13. exit
复制代码

TOP

我也来一个,哈哈…………

  1. @echo off
  2. set mode con lines=30
  3. :0
  4. cls
  5. echo.#######################################
  6. echo.投票:
  7. echo. 1、楼主的贴子写得好;
  8. echo. 2、楼主的贴子写得一般般;
  9. echo. 3、楼主的贴子写得不啥的。
  10. echo.#######################################
  11. echo.
  12. set no=:
  13. set /p no= 请选择:
  14. set "no=%no:"=%"
  15. if "%no%"==":" goto 0
  16. if "%no%"=="1" goto 1
  17. if "%no%"=="2" goto 2
  18. if "%no%"=="3" goto 3
  19. if "%no%"=="0" goto 0
  20. goto 0
  21. :1
  22. cls
  23. echo.哈哈,你太英名了!!!
  24. pause>nul
  25. goto 0
  26. :2
  27. cls
  28. echo.哟,你太客气了!!!
  29. pause>nul
  30. goto 0
  31. :3
  32. cls
  33. echo.你眼神不好!!!要不你来写一个更好的!
  34. pause:nul
  35. goto exit
  36. :exit
  37. exit
复制代码

TOP

都是高手,看着挺费劲!
活到老,学到老;终身学习!!

TOP

返回列表