在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
if 命令示例详解 if,正如它E文中的意思,就是“如果”的意思,用来进行条件判断。翻译过来的意思就是:如果符合某一条件,便执行后面的命令。 主要用来判断 1、两个“字符串”是否相等; 2、两个数值是大于、小于、等于,然后执行相应的命令。 当然还有特殊用法,如结合errorlevel:if errorlevel 1 echo error 使用 if 命令判断上一条命令的退出代码
@echo off echo www.ogeek.net | findstr "ogeek" if %errorlevel% equ 0 ( echo 找到指定字符串 ) else ( echo 没有找到指定字符串 ) pause if errorlevel 0 判断的是 errorlevel 是否大于等于 0 @echo off echo www.ogeek.net | findstr "ogeek" if errorlevel 1 ( echo 没有找到指定字符串 ) else ( echo 找到指定字符串 ) pause 但 把 if errorlevel 0 放在最前面在逻辑上是错误的 if errorlevel 0 ( echo 找到指定字符串 ) else if errorlevel 1 ( echo没有找到指定字符串 ) 使用 if 命令判断文件是否存在不使用反斜线的情况下 if exist 命令无法直接区分文件和文件夹 判断文件夹的时候在最后加上反斜线 @echo off if exist "C:\Program Files\" ( echo 文件夹存在 ) else ( echo 文件夹不存在 ) pause 判断文件的时候先排除文件夹 if not 表示条件不成立的情况下执行命令 @echo off if not exist "1.txt\" ( if exist "1.txt" ( echo 文件存在 ) else ( echo 文件不存在 ) ) pause 使用 if 命令进行字符串比较使用 == 判断两个字符串或数字是否相等
使用 /i 可以忽略字母大小写
数字比较不要使用双引号
比较操作符
批处理if命令字符串比较和ASCII的关系
扩展阅读 https://www.ogeek.net/article/223121.htm http://bbs.bathome.net/thread-12314-1-1.html http://bbs.bathome.net/thread-12329-1-1.html if命令知识点(1)变量延迟扩展复合语句需要启用变量延迟扩展 错误写法 @echo off set VAR=before if "%VAR%" == "before" ( set VAR=after if "%VAR%" == "after" ( echo 重新赋值成功 ) else ( echo 重新赋值失败 ) ) pause 正确写法 @echo off setlocal enabledelayedexpansion set VAR=before if "%VAR%" == "before" ( set VAR=after if "!VAR!" == "after" ( echo 重新赋值成功 ) else ( echo 重新赋值失败 ) ) pause 错误写法 @echo off for %%i in ("C:\Windows\*.exe") do ( set list=%list% %%i ) echo %list% pause 正确写法 @echo off setlocal enabledelayedexpansion for %%i in ("C:\Windows\*.exe") do ( set list=!list! %%i ) echo %list% pause 批处理中的变量延迟扩展、变量嵌套 http://bbs.bathome.net/thread-2899-1-1.html if命令知识点(2)删除重复行使用 if defined 命令删除文本中的重复行 @echo off for /f "delims=" %%i in (1.txt) do ( if not defined _%%i ( echo,%%i set "_%%i=1" ) ) pause C:\>type 1.txt C:\>test.bat 这个方法不适合用来处理非常大的文件,而且无法处理包含等号的行,参考: http://bbs.bathome.net/thread-4690-1-1.html 下面是一些补充用法示例: 1、检测字符串(注意,用if检测字符串是否相等的时候,后面用的不是“=”,而是“==”): @echo off set "str=this is a test" REM 检测变量%str%是否等于test,如果相等,显示OK,否则显示NO if "%str%"=="test" (echo OK) else echo NO pause>nul 2、检测数值:(注意,批处理中大于符号不能用:“>”,而用"gtr",其它的也类似) 比较运算符一览: @echo off set /a num1=20 set /a num2=15 if %num1% gtr %num2% echo %num1%大于%num2% if %num1% EQU %num2% echo %num1%等于%num2% if %num1% LSS %num2% echo %num1%小于%num2% pause>nul 3、if结合errorlevel使用: 说明:环境变量errorlevel的初始值为0,当一些命令执行不成功,就会返回一个数值,如:1 ,2 等 @ECHO OFF XCOPY F:\test.bat D:\ IF ERRORLEVEL 1 ECHO 文件拷贝失败 IF ERRORLEVEL 0 ECHO 成功拷贝文件 如果文件拷贝成功,屏幕就会显示“成功拷贝文件”,否则就会显示“文件拷贝失败”。
无论拷贝是否成功,后面的:
4、if还有一个特殊的用法就是可以用来检测某个变量是否已经被定义 用法示例: @echo off set "str1=ok" set "str2=no" if defined str1 echo str1已经被定义 if defined str2 echo str2已经被定义 if defined str3 (echo str3已经被定义) else echo str3 没有被定义 pause>nul 待续.... |
请发表评论