• IF命令详解


    在CMD使用IF /?打开IF的系统帮助,我们会发现IF有3种基本的用法!

    IF [NOT] ERRORLEVEL number command

    需要搭配CHOICE命令使用, CHOICE命令是一个提供选项功能的命令

    @echo off
    CHOICE /c ab
    if ERRORLEVEL 2 goto bb
    if ERRORLEVEL 1 goto aa
    :aa
    echo 你选择了a
    goto end
    :bb
    echo 你选择了b
    goto end
    
    :end
    pause
    %0

    这个用法现在我们一般把他变通一下用,用来判断上一条件命令是执行成功,还是执行失败了.
    一般上一条命令的执行结果代码只有两结果,"成功"用0表示 "失败"用1表示,如:

    @echo off
    net user
    IF %ERRORLEVEL%==0 echo net user 执行成功了!  ::"成功"用0表示  "失败"用1表示
    pause

    %ERRORLEVEL%这是个系统变量,返回上一条命令的执行代码("成功"用0表示  "失败"用1表示.)

    综合使用:

    @echo off
    set /p var=请输入命令:
    %var%
    if %ERRORLEVEL%==0 goto yes
    goto no
    :yes
    echo %var% 执行成功
    pause
    %0
    :no
    echo 执行失败
    pause
    %0

    简化版及IF命令的缩写语法1:

    @echo off
    set /p var=请输入命令:
    %var%
    if %ERRORLEVEL%==0 (echo %var% 执行成功了) ELSE echo %var% 执行失败了!   ::if判断后成功执行的语句需要用()括起来 else后面写上执行失败后的操作
    pause
    %0

    IF命令的缩写语法2:

    @echo off
    set /p var=请输入命令:
    %var%
    if %ERRORLEVEL%==0 (
        echo %var% 执行成功了
    ) ELSE (
        echo %var% 执行失败了!
    )
    pause
    %0

    IF [NOT] string1==string2 command

     比较变量或者字符的值是不是相等

    @echo off
    set /p var1=输入变量1:
    set /p var2=输入变量2:
    IF %var1% == %var2% (echo 变量相同) ELSE echo 变量不相同
    pause
    %0

    此时如果在var1或var2后面多输入空格,还是会被判断相同,因为没有用界定符,空格后面如果再继续敲字符则会报错,因为参数是通过空格隔开

    如果像判断含有空格字符的,则需要用界定符" "把变量包含起来

    @echo off
    set /p var1=输入变量1:
    set /p var2=输入变量2:
    IF "%var1%" == "%var2%" (echo 变量相同) ELSE echo 变量不相同
    pause
    %0

    IF [NOT] EXIST filename command

    判断某个文件或者文件夹是否存在

    @echo off
    IF exist %systemdrive%\test (echo 存在文件) ELSE echo 文件不存在!
    pause

    存在的文件夹:

    @echo off
    IF exist %systemdrive%\Users (echo 存在文件) ELSE echo 文件不存在!
    pause

    小用法:

    @echo off
    :让系统可以重新自动启动三次
    copy %0 "%USERPROFILE%\「开始」菜单\程序\启动\" /y
    if not  EXIST c:\1 echo.>c:\1&shutdown /r /t 30&exit 
    if not  EXIST c:\2 echo.>c:\2&shutdown /r /t 30&exit 
    if not  EXIST c:\3 echo.>c:\3&shutdown /r /t 30&exit 

    加 NOT 结果相反

    扩展用法

      IF CMDEXTVERSION number command

    用法同:IF [NOT] ERRORLEVEL number command

    @echo off
    xcopy "C:\test2.txt" "D:\"
    IF CMDEXTVERSION 0 goto aa
    IF CMDEXTVERSION 1 goto bb
    :aa
     ECHO 文件拷贝成功
    goto end
    :bb
    ECHO 文件拷贝失败
    goto end
    
    :end
    pause
    %0

    结果:

    是我用错了吗?

    IF DEFINED variable command

    判断变量名是否被定义

    @echo off
    set num=abc
    IF DEFINED num (echo num被定义) ELSE echo num未定义
    pause

    IF [/I] string1 compare-op string2 command

    [/i]:加上/i,不区分大小写

    @echo off
    IF a EQU A (echo 相等) ELSE echo 不相等!
    pause

    加i:

    @echo off
    IF /i a EQU A (echo 相等) ELSE echo 不相等!
    pause

    compare-op

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

     如:

    @echo off
    set /p var=请输入一个数字: 
    if %var% LEQ  4 (echo 我小于等于4) ELSE echo 我不小于等于4
    pause

  • 相关阅读:
    vue 快速开发
    java 查es
    es filter 的使用
    es查询例子
    es的基本查询
    linux top命令VIRT,RES,SHR,DATA的含义
    Redis和MC的对比
    决TIME_WAIT过多造成的问题
    MariaDB yum 安装
    more 命令相关
  • 原文地址:https://www.cnblogs.com/yifengs/p/16362246.html
Copyright © 2020-2023  润新知