首页 > 其他分享 >bat-3-if判断

bat-3-if判断

时间:2024-05-16 11:21:05浏览次数:17  
标签:bat 判断 ERRORLEVEL echo 命令 CMDEXTVERSION filename 环境变量

if语句

基本语法

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

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

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

ERRORLEVEL number 如果上一条命令返回的退出状态码等于或大于指定数字,则为 true。

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

  • command 符合条件时,指定要执行的命令。

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

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

由于 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

if命令扩展

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

  1. 判断字符串
IF [/I] string1 compare-op string2 command

/I 选项用于指定字符串比较不区分大小写。

其中, compare-op 可以是:

EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
  1. 判断环境变量是否存在
    IF DEFINED variable command

DEFINED 条件用于检查一个环境变量是否存在,如果存在则为true。

  1. 判断命令扩展版本
    IF CMDEXTVERSION number command

CMDEXTVERSION 条件检查命令扩展的版本号,它会检查命令扩展的版本是否等于或大于该数字。如果命令扩展被停用时,CMDEXTVERSION 条件不为真。

以下示例012 都返回。

IF CMDEXTVERSION 0 echo ok

IF CMDEXTVERSION 1 echo 命令扩展版本号至少是1。

IF CMDEXTVERSION 2 echo 命令扩展版本号至少是2。

IF CMDEXTVERSION 3 echo 命令扩展版本号至少是3。

几个特殊的环境变量

ERRORLEVEL

如果没有手动创建名为 ERRORLEVEL 的环境变量,使用 %ERRORLEVEL% 会代表上一条命令退出状态码,否则,会获得手动创建的 ERRORLEVEL 环境变量的值。

退出状态码通常是一个整数,其中0表示成功,非零值表示错误或特定的退出状态。

因此,通常情况下,我们不建议在批处理脚本中创建名为ERRORLEVEL的自定义环境变量,以免与内置的ERRORLEVEL机制产生混淆。

@REM set ERRORLEVEL=1

if %ERRORLEVEL% == 0 echo 0

CMDEXTVERSION

如果没有名为 CMDEXTVERSION 的环境变量,使用 %CMDEXTVERSION% 会存储命令扩展的版本号;否则,你会得到创建的 CMDEXTVERSION 环境变量的值。

CMDCMDLINE

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

标签:bat,判断,ERRORLEVEL,echo,命令,CMDEXTVERSION,filename,环境变量
From: https://www.cnblogs.com/jiyuchen1/p/18181928

相关文章

  • MyBatis-Plus 实现多租户管理的实践
    本文主要讲解使用Mybatis-Plus结合dynamic-datasource来实现多租户管理在现代企业应用中,多租户(Multi-Tenant)架构已经成为一个非常重要的设计模式。多租户架构允许多个租户共享同一应用程序实例,但每个租户的数据彼此隔离。实现这一点可以大大提高资源利用率并降低运营成本。在本......
  • mybatis及mybatis-plus的实体映射
    packagecom.duxiang.backgroundmanagement.entity;importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;1.mybatisimportjavax.persistence.*;@Data@AllArgsConstructor@NoArgsConstructor@Table(name="m_chat")/......
  • ASP.NET Core的全局拦截器(在页面回发时,如果判断当前请求不合法,不执行OnPost处理器)
    ASP.NETCoreRazorPages中,我们可以在页面模型基类中重载OnPageHandlerExecuting方法。下面的例子中,BaseModel继承自PageModel,是所有页面模型的基类。推荐方案:在BaseModel.cs中,重载OnPageHandlerExecuting方法(看下面代码中的注释):publicoverridevoidOnPageHandlerExecuting......
  • Mybatis-Plus中 updateById 无法将已有值的字段更新为 null
    在MyBatis-Plus中,使用updateById,null字段并不会更新,其实是和更新的策略有关,当然,也有插入策略。1、调整全局策略(会对所有的字段都忽略判断,如果一些字段不想要修改,但是传值的时候没有传递过来,就会被更新为null)mybatis-plus:global-config:db-config:insert-stra......
  • ibatis-LruCache
    核心对象当Map存储key数量超出初始化设置的size时,标记最老的key,下次put时会自行删除eldestkey。Map<Object,Object>keyMap=newLinkedHashMap();为什么使用LinkedHashMap?支持头、尾,快速获取头结点,从Map中快速删除数据。实现removeEldestEntry方法,用于获取eldestKey。putO......
  • ibatis-FifoCache
    核心代码Deque<Object>keyList=newLinkedList<>();为什么使用LinkedList?单向链表。使用LinkedList实现FIFO,支持头、尾节点的单向链表。添加时,判断数量大于初始化值时,删除头结点。源码:publicclassFifoCacheimplementsCache{privatefinalCachedelegate;pri......
  • 【反向思维】怎么判断面试者是否有扎实的前端基础?
    前鹅厂前端,待了4年,也算是个前端部分还有点复杂的项目的负责人。在鹅厂面试了几百人,慢慢总结了一下自己的经验,希望对求职的同学有帮助,反向思维及去准备。【技术大厂,前后端可投】我一般就问四个问题,主要还是引导让候选人自个发挥。1,问项目(40分)做过哪些项目,在其中怎么思考的。如果......
  • Mybatis使用cache-ref需注意的问题
    https://blog.csdn.net/Ewan_/article/details/1298659741.在MapperXML中使用<cache-ref>标签UserCacheMapperXML需要有<cache>标签,如果没有则会爆Exceptioninthread"main"org.apache.ibatis.builder.IncompleteElementException:Nocachefornamespace'......
  • spring整合mybatis
    整合步骤:首先将mybatis-config.xml环境的配置:数据源、驱动、url、username、password…这些基础配置移交给Spring的核心配置文件application.xml文件中!创建bean对象dataSource顶替Resource。再通过dataSource对象,创建bean对象SqlSessionFactory,这时候SqlSessionFactory工......
  • mybatis多线程插入数据表已经事务回滚
    importlombok.extern.slf4j.Slf4j;importorg.apache.commons.collections4.CollectionUtils;importorg.apache.commons.collections4.ListUtils;importorg.apache.ibatis.session.ExecutorType;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibati......