在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