摘要:本文介绍了windows bat中IF语句的语法,包括3中基本形势和扩展IF语句

1. IF & IF not

if  和 if not 有都有3中形势:

IF [NOT] ERRORLEVEL number do command
IF [NOT] string1==string2 do command
IF [NOT] EXIST filename do command

NOT               指定只有条件为 false 的情况下,Windows 才
                    应该执行该命令。

ERRORLEVEL number 如果最后运行的程序返回一个等于或大于
                    指定数字的退出代码,指定条件为 true。

string1==string2  如果指定的文字字符串匹配,指定条件为 true。

EXIST filename    如果指定的文件名存在,指定条件为 true。

command           如果符合条件,指定要执行的命令。如果指定的
                    条件为 FALSE,命令后可跟 ELSE 命令,该命令将
                    在 ELSE 关键字之后执行该命令。

1.1 IF [NOT] string1==string2    do command

注意是 string, 同时要保持string1 和string2 的格式相同

如:

if "%1"=="a" format a:
if {%1}=={} goto noparms
if {%2}=={} goto noparms

1.2 IF [NOT] EXIST filename      do command

如果有指定的文件,则条件成立,运行命令,否则运行下一句。

1.
if exist config.sys edit config.sys
2.
if exist %1.obj link %1.obj
else pause & edit %1.asm
3. IF EXIST filename. (del filename.) ELSE (echo filename. missing.)

ELSE 子句必须出现在同一行上的 IF 之后

由于 del 命令需要用新的一行终止,因此以下子句不会有效:

IF EXIST filename. del filename. ELSE echo filename. missing

由于 ELSE 命令必须与 IF 命令的尾端在同一行上,以下子句也
不会有效:

    IF EXIST filename. del filename.ELSE echo filename. missing

如果都放在同一行上,以下子句有效:

    IF EXIST filename. (del filename.) ELSE echo filename. missing

1.3 IF [NOT] ERRORLEVEL number do command

如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。
如if errorlevel 2 goto x2  
DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码,常见的返回码为0、1。

2. IF扩展

如果命令扩展被启用,IF 会如下改变:

    IF [/I] string1 compare-op string2 command
    IF CMDEXTVERSION number command
    IF DEFINED variable command

(1) IF [/I] string1 compare-op string2 command

compare-op 可以是:

EQU - 等于
    NEQ - 不等于
    LSS - 小于
    LEQ - 小于或等于
    GTR - 大于
    GEQ - 大于或等于

/I 开关(如果指定)说明要进行的字符串比较不分大小写。
/I 开关可以用于 IF 的 string1==string2 的形式上。这些比较都是通用的;原因是,如果 string1 和 string2 都是由数字组成的,字符串会被转换成数字,进行数字比较。
(2)IF CMDEXTVERSION number command
CMDEXTVERSION 条件的作用跟 ERRORLEVEL 的一样,除了它是在跟与命令扩展有关联的内部版本号比较。第一个版本是 1。每次对命令扩展有相当大的增强时,版本号会增加一个。命令扩展被停用时,CMDEXTVERSION 条件不是真的。

如果已定义环境变量,DEFINED 条件的作用跟 EXIST 的一样,除了它取得一个环境变量,返回的结果是 true。

如果没有名为 ERRORLEVEL 的环境变量,%ERRORLEVEL%
会扩充为 ERROLEVEL 当前数值的字符串表达式;否则,您会得到
其数值。运行程序后,以下语句说明 ERRORLEVEL 的用法:

goto answer%ERRORLEVEL%
    :answer0
    echo Program had return code 0
    :answer1
    echo Program had return code 1

您也可以使用以上的数字比较:

IF %ERRORLEVEL% LEQ 1 goto okay

如果没有名为 CMDCMDLINE 的环境变量,%CMDCMDLINE%
将在 CMD.EXE 进行任何处理前扩充为传递给 CMD.EXE 的原始
命令行;否则,您会得到其数值。

如果没有名为 CMDEXTVERSION 的环境变量,
%CMDEXTVERSION% 会扩充为 CMDEXTVERSION 当前数值的
字串符表达式;否则,您会得到其数值。

windows bat (批处理)——IF详解相关推荐

  1. Windows BAT批处理命令详解

    批处理可以说是windows下的shell,虽然没有shell强大吧,但也足以用来完成很多任务了.这里记录了大部分的批处理用法. 先说使用批处理要注意的几点: 尽量不要将批处理要操作的文件放在不同的盘 ...

  2. windows系统dos命令:cmd.exe运行的bat批处理命令详解

    DOS批处理 1.简单批处理命令 1.1echo:打开或关闭回显 echo off 关闭回显 ==>关闭之后不会显示一些不必要的信息. 后面所有的命令均不显示,但本条命令是显示的. @echo ...

  3. Windows WMIC命令使用详解

    Windows WMIC命令使用详解 第一次执行WMIC命令时,Windows首先要安装WMIC,然后显示出WMIC的命令行提示符.在WMIC命令行提示符上,命令以交互的方式执行. 执行"w ...

  4. Windows系统环境变量path详解

    Windows系统环境变量path详解 大家平时有没有编辑好path变量,可是运行结果却不尽人意的情况,那么希望看完我这篇关于path变量的文章对大家有所帮助,在文章的结尾有参考文档和笔者之前踩过的坑 ...

  5. 9、Windows驱动开发技术详解笔记(5) 基本语法回顾

    5.在驱动中获取系统时间 1)获取启动毫秒数 在ring3 我们可以通过一个GetTickCount 函数来获得自系统启动开始的毫秒数,在ring0也有一个与之对应的KeQueryTickCount ...

  6. Windows 7防火墙设置详解(三)

    Windows 7防火墙设置详解(三) 一.如何禁用或启用规则 方法:只需要在需要禁用或启动的规则上,鼠标右键选择启用或禁止规则即可,或点击右侧的操作栏进行规则启用或禁止. 二.入站规则和出站规则 由 ...

  7. Windows 下OpenSSL 安装详解 +图解

    Windows 下OpenSSL 安装详解 +图解 转载于:https://www.cnblogs.com/zhujiabin/p/5088646.html

  8. 15、Windows驱动开发技术详解笔记(11) 基本概念

    9.Windows驱动程序的入口函数规定为_DriverEntry@8,所以用C++编写时要用extern. 驱动程序中,不能使用编译器运行时函数,甚至C语言中的malloc,C++的new函数都不能 ...

  9. mfc编程vc6.0实现进程的创建和通信_免费送书:windows黑客编程技术详解

    01 书怎么送 点赞并留言,关注在下面的公众号后台回复「抽奖」,弹出小程序后点击参与. 开奖时间是 7 月 7 号 20:00 ,一定要留意微信消息,如果你中奖了,请尽快在中奖页面提交收件人信息并备注 ...

  10. windows .bat批处理实现进程监控确保程序运行

    windows .bat批处理实现进程监控确保程序运行 转载于:https://www.cnblogs.com/liuys635/p/11258603.html

最新文章

  1. DailyTick 开发实录 —— UI 设计
  2. 【LeetCode】3Sum Closest 解题报告
  3. Apriori 使用说明
  4. [Python学习] 专题四.文件基础知识
  5. 自定义工具类:工具类介绍
  6. 2007cad多个文件窗口上部排列_【中考信息技术总复习讲义】模块三 操作系统与文件管理...
  7. jquery mobile页面切换效果(Flip toggle switch)(注:jQuery移动使用的数据属性的列表。 )...
  8. Nginx—— Rewrite规则的使用
  9. Kubernetes(十七) 基于NFS的动态存储申请
  10. android 开启线程关闭对话框,java – 从后台线程的PopUp对话框Android
  11. mysql 单块读 多块读_求指点:STM32F103VC的SDIO读SD卡单块读成功,多块读却不行?...
  12. Ansible Tower - 使用入门 4 - 用 Workflow 执行模板
  13. Youtube的value-based强化学习推荐系统
  14. 4、Spring配置中的classpath:与classpath*:的区别
  15. 再谈PN学习(Tracking-Learning-Detection)
  16. php基于纯真IP数据库实现IP地址信息查询
  17. 基于web的网上书城网站设计与实现(SpringBoot ,Vue,MySQL )
  18. python爬虫反虫之setcookie
  19. 【OpenCV学习】(三)色彩及矩阵操作
  20. linux使用定时器回调函数示例

热门文章

  1. java 查询本机安装的字体
  2. 机器人总动员英语情歌_《机器人总动员》中英双语经典电影台词|截图|对白——公众号:电影台词精选...
  3. 智能蓝牙防丢器(Airtag)
  4. itunes中的itunes store打不开
  5. linux系统print命令,linux常用命令 print格式输出
  6. 未来哪些职业会被chatGPT取代
  7. 说说手机设计行业那些事儿
  8. GitHub 超 6800 Star!让你一键还原百年老电影、黑白旧照片本色
  9. 【与神对话】和【零极限】系列完整书单
  10. 设备管理器,查看设备连接端口