Windows系统bat批处理特殊命令(二)

发布时间:2022-07-04 21:49:52 作者:四川晨安迪网络科技有限公司 来源:本站 浏览量(14) 点赞(61)
摘要:四、特殊命令1、if 命令(1)格式:if [not] exist [ 路径 /]文件名 待执行的命令如果有指定的文件,则条件成立,运行命令,否则运行下一句。eg: if exist c:/config.sys type c:/config.sys //表示如果存在c:/config.sys 文件,则显示它的内容(2)格式: if errorlevel < 数字 > 待执行的命令很多 DOS程序在运行结束

四、特殊命令



1、if 命令



(1)格式:if [not] exist [ 路径 /]文件名 待执行的命令



如果有指定的文件,则条件成立,运行命令,否则运行下一句。



eg: if exist c:/config.sys type c:/config.sys //表示如果存在c:/config.sys 文件,则显示它的内容



(2)格式: if errorlevel < 数字 > 待执行的命令



很多 DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态 ),通过 if errorlevel 命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令 ( 返回值必须按照从大到小的顺序排列 )。如果返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。IF ERRORLEVEL是用来测试它的上一个 DOS命令的返回值的,注意只是上一个命令的返回值,而且返回值必须依照从大到小次序顺序判断。如下的例子,先判断返回值为 1 的,再判断返回值为 0 的。



eg: IF ERRORLEVEL1 ECHO 文件拷贝失败



eg: IF ERRORLEVEL0 ECHO 成功拷贝文件



(3) if number 比较符 value command



== 等于



EQU 等于



NEQ 不等于



LSS 小于



LEQ 小于或等于



GTR 大于



GEQ 大于或等于



(4)if defined test command //如果定了了变量 test,则执行 command。



eg: if defined test echo It is defined.



(5)if 条件 1 (command1) else (command2) // 条件 1 后的命令行必须有括号。



在 if 后,若要执行多条命令,可以将这些命令放在一对括号中,且左括号必须跟 if 关键字在同一行,如:



cd /d :/slfslfsl



if errorlevel 1 (



mkdir d:error



mkdir d:



mkdir d:)



2、 goto 命令



批处理文件运行到这里将跳到 goto 所指定的标号 (标号即 label , 标号用 : 后跟标准字符串来定义 ) 处, goto 语句一般与 if 配合使用, 根据不同的条件来执行不同的命令组。



如: goto end



:end



echo this is the end



标号用 ":字符串 " 来定义,标号所在行不被执行。在有多个标号时,每个标号都要有 goto 语句跳出,否则各个标号程序会连续执行。



3、 for 命令:



对一个或一组文件,字符串或命令结果中的每一个对象执行特定命令,达到我们想要的结果。注意:在批处理文件中使用 FOR命令时,指定变量请使用 %%variable,而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I。



格式:FOR [参数 ] %%变量名 IN (相关文件或命令) DO执行的命令



for 命令可以带参数或不带参数,带参数时支持以下参数 :/d /l /r /f 语法:



(1) 不带参数:



FOR %%variable IN (set) DO command [command-parameters]



%%variable 指定一个单一字母可替换的参数。



(set) 指定一个或一组文件。 可以使用通配符。 //不带参数时, 只指文件。



command 指定对每个文件执行的命令。



command-parameters 为特定命令指定参数或命令行开关。



DO后面可以跟 if 等其他命令,需要用 () 括起来。



eg :



for %%i in (t*.*) do echo %%i -- 显示当前目录下与 t*.* 相匹配的文件 (只显示文件名,不显示路径 )



for %%i in (d:mydocuments*.doc) do @echo %%i -- 显示该目录下与 *.doc 相匹配的文件



(2) 带有参数时:



1) 参数 /d (参数只能显示当前目录下的目录名字 )



格式:FOR /D %variable IN (set) DO command [command-parameters]



这个参数主要用于目录搜索 ,不会搜索文件 ,/D 参数只能显示当前目录下的目录名字。(特别说明:只会搜索指定目录下的目录,不会搜索再下一级的目录。 )



for /d %%i in (c:*) do echo %%i -- 显示 c 盘根目录下的所有目录



for /d %%i in (???) do echo %%i -- 显示当前目录下名字只有 1-3 个字母的目录



2) 参数 /R (搜索指定路径及所有子目录中与 set 相符合的所有文件 )



格式:FOR /R [[drive:]path] %variable IN (set) DO co mmand [command-parameters] 此命令会搜索指定路径及所有子目录中与set 相符合的所有文件,注意是指定路径及所有子目录。set 中的文件名如果含有通配符 (?或 *) , 则列举 /R 参数指定的目录及其下面的所有子目录中与 set 相符合的所有文件, 无相符文件的目录则不列举。



3) 参数 /L (该集表示以增量形式从开始到结束的一个数字序列。可以使用负的 Step)



格式:FOR /L %variable IN (start,step,end) DO command [command-parameters]



for /l %%i in (1,1,5) do @echo %%i --输出 1 2 3 4 5// 从1 开始,递增1,最大值为5



4) 参数 /F(主要用来处理文件内容或命令的输出结果, /F 默认将每行作为一个元素来处理。)



格式:FOR /F ["options"] %%i IN (file) DO command // file 代表一个或多个文件。 for 会依次将file 中的文件打开,并且在进行到下一个文件之前将每个文件读取到内存,将每行作为一个的元素,



%%i代表这个元素。忽略空白的行。



FOR /F ["options"] %%i IN ("string") DO command // string 代表字符串



FOR /F ["options"] %%i IN ('command') DO command // command 代表命令。命令行需要用单引号。



["options"] 可选



4、 set 命令:设置变量



(1) set 显示环境变量



set 会显示当前所有的系统环境变量



set c 会显示所有以 c 或 C开头的变量。 ( 即:不区分大小写 )



set com 显示所有以 com或 Com开头的变量



(2) set 设置环境变量



如:set str=ok // 就是将变量 str 的值设置成字符串“ OK”注:如果在变量值中有特殊字符,则 set 后面的表达式需要用双引号括起来。如: set “str=ok> ”



(3) 带参数 /a 的 set 数值计算



set 的/A 参数就是让 SET可以支持数学符号进行加减等一些数学运算 。支持的数学运算包含(优先权递减) :



() // 分组



! ~ // 一元运算符



* / % // 算数运算符



+ // 算数运算符



<<>> // 逻辑移位



& // 按位“与”



^ // 按位“异”



| // 按位“或”



= *= /= %= += -= // 赋值



&= ^= |= <<= >>=



, // 表达式分隔符



如: set /a var=10-2 // 结果: var=8 ,如果没有 /a ,则 var 的值是字符串 10-2



set /a var=2*2



set /a var=2/2



set /a var=(1+1)+(1+1)



set /a a=1+1,b=2+1,c=3+1 // 使用“,”将表达式分隔。



echo %a% %b% %c%



注意:逻辑运算符和取余操作符需要用双引号括起来 , 如:



set /a var=1 “&” 1



set /a var=1 “%” 1



set /a var=2 “<<” 2



(4) 带参数 /p 的 set 命令:允许变量值是用户的输入行



如:set /p str=Please input you string.



echo Your input is: %str%.



注意: set /p 的特殊用法set /p=A // 直接显示等号后面的内容,相当于 echo A. 但是显示内容后需要手动按回车键后才能继续执行下一条语句。set /p=A<null // 显示内容并不带回车。即:显示完后立即执行下一条语句。由于没有回车,下一条语句的输出会跟在这条语句的后面。



@echo off



for /l %%i in (1 1 300) do (



set /p=O<null // 输出字母 O



for /l %%ain (1 1 280) do ver>null) // 利用 for 循环运行 ver>null



来达到延时的目的。其中 ver 是显示当前命令行窗口版本的命令。也可以将 var 换位 help,time /t 等其他命令。



pause>null



(5) 字符串截取



格式: set a=%var:~start,len% // 从变量 var 的值的 start 位开始截取, 一共截取 len 位。若 start 或 len 为负数,表示从倒数第几位开始截取或截取倒数几位。位数的表示是从 0 开始的。



@echo off



set var=www.baidu.com



set a=%var:~1,2%



echo %a%



pause>null



从第 1 位( 也即第二个字符 ) 开始,截取 2 个字符。



%var:~5% // 从第 6 开始,截取剩下所有字符。



%var:~-3% // 截取倒数 3 位



%var:~0,-len% // 截取从第一位开始,倒数第 len 位结束的字符。



eg:



@echo off



::以“YYYYMMDD”格式取出当前时间。



set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%


二维码

扫一扫,关注我们

声明:本文由【四川晨安迪网络科技有限公司】编辑上传发布,转载此文章须经作者同意,并请附上出处【四川晨安迪网络科技有限公司】及本页链接。如内容、图片有任何版权问题,请联系我们进行处理。

感兴趣吗?

欢迎联系我们,我们愿意为您解答任何有关网站疑难问题!

您身边的【网站建设专家】

搜索千万次不如咨询1次

主营项目:网站建设,手机网站,响应式网站,SEO优化,小程序开发,版权登记,商标注册等

立即咨询 15555586520
在线客服
嘿,我来帮您!