BZ易风

导航

 

在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

 

posted on 2022-06-10 10:16  BZ易风  阅读(799)  评论(0编辑  收藏  举报