洞察纵观鸿蒙next版本,如何凭借FinClip加强小程序的跨平台管理,确保企业在数字化转型中的高效运营和数据安全?
905
2022-09-11
【Windows批处理】常用命令
文章目录
介绍创建批处理文件
使用copy con命令创建使用记事本创建
语法
echo@pausecallremsetgotostartifforsetlocalshift* 和 ?<、>、>>|
介绍
批处理(Batch),也称为批处理脚本。顾名思义,批处理就是对某对象进行批量的处理。批处理文件的扩展名为 bat
批处理文件,或称为批处理程序,是由一条条的DOS命令组成的普通文本文件,可以用记事本直接编辑或用DOS命令创建
批处理可以在dos系统或windows系统上运行,所以批处理的命令比dos的命令要多,基本都是dos命令组成,但多了些流程控制命令
创建批处理文件
使用copy con命令创建
使用记事本创建
语法
echo
echo [message]:显示信息echo {[on/off]}:开/关回显功能,如果将@echo off`放最前面,将不会显示命令本身,只显示输出结果
其中 type 可以显示文本文件的内容
echo ontype a.txtecho offecho Hello
@
@用于关闭本命令回显,@ 并不受echo状态的影响,例如 @echo on,这条命令不显示,@type a.txt这条命令不显示,但命令执行结果(查看a.txt内容)会显示。
@echo on@type a.txtecho offecho Hello
pause
pause用于暂停批处理的执行器并给出提示信息,然后由用户决定是继续执行还是终端执行
@echo offecho pause命令测试...pauseecho Hello World
call
call命令用来从一个批处理脚本中调用另一个批处理脚本,并且能够调用指定标号后的命令(注意调用时必须在标签名前加冒号)。调用完毕后回到调用处继续执行后边的命令,这也就是为什么 A 后边的内容输出了两遍,看例子:
test.bat内容
@echo offecho 正在调用called.bat...call called.batecho 调用完毕called.bat...echo 现在调用 A 标号后的内容...call :A:Aecho This is A
called.bat内容
@echo offecho This is called.bat
rem
rem 为注释命令,该命令后的内容不被执行,但能回显
在 test.bat 中列出 后缀为 .bat 的文件
@echo offrem 这是一个简单的批处理命令dir *.bat
set
set是专门用来创建、设置、查看或删除环境变量
@echo offset xxx="C:\Users\00lix\Desktop\test\video"set yyy="D:\KuGou"echo 显示以x开头的变量set xdir /w %xxx%rem 删除名为xxx的变量set xxx=
goto
goto label 跳转到要执行的标签,标签由冒号与标签名组成
多个标签之间要加上exit终止程序继续向下运行同名的标签,程序执行最上面的一个标签名必须是常量,不能是变量标签名中可使用空格,但不得包括其他分隔符(例如分号或等号)命令只使用标签的前八个字符
@echo offecho 跳过中间的命令,执行最后一条goto lastecho 111echo 222:lastecho 333
start
启动单独的“命令提示符”窗口来运行指定程序或命令。如果在没有参数的情况下使用,start 将打开第二个命令提示符窗口,命令格式如下,还有很多参数,自行百度
start ["title"] [/WAIT][command/program] “title”:在窗口标题栏中显示的标题 WAIT:启动应用程序并等候它结束
@echo offecho 将在新窗口中显示a.txt的内容start "a.txt"的内容 /wait type a.txtecho 已从新命令窗口返回
if
如果 if 后面判断为真后,只处理单句命令的话,直接跟在 后面就可以 如果 判断为真后,需要执行多条命令的话,则需要用括号将多条命令扩起来 注意: 括号“(” 要位于跟 if 同一行,如果不在同一行的话执行时会报语法错误 注意2:多层嵌套的if语法如下
if exist a.txt ( if exist 1.txt ( echo 存在 a.txt 和 1.txt ) else ( echo 存在 a.txt 但是不存在 1.txt )) else if exist b.txt ( echo 不存在 a.txt 但是存在 b.txt) else ( echo 不存在 a.txt 和 b.txt)
如果你要将 else if 换行,需要在 “)” 后面添加 “^” 符号。
用法1:判断文件是否存在
@echo offif exist a.txt (echo 存在a.txt) else (echo 不存在a.txt)
用法2:判断某两个字符串是否相等
@echo offif "abc"=="abc" (echo 相等) else (echo 不相等)
默认情况if语句是区分大小写,可以添加/i参数取消大小写区分
@echo offif /i "ABC"=="abc" (echo 相等) else (echo 不相等)
@echo offif 1 equ 2 (echo 1和2相等) else (echo 1和2不相等)
用法4:判断某个变量是否已经被赋值
@echo offset var1=123if defined var1 echo var1被定义了,值为%var1%if defined var2 (echo var2被定义了) else (echo var2没被定义)
for
@echo offset /a sum=0for %%x in (*.txt) do ( echo %%x文件内容如下: type %%x echo. set /a sum=sum+1)echo 一共显示了%sum%个文本文件
setlocal
启动批处理文件中环境变量的本地化。本地化将持续到出现匹配的 endlocal 命令或者到达批处理文件结尾为止
@echo offsetlocalpath=d:\echo 局部环境变量path的值:set pathendlocalecho 系统环境变量path的值:set path
shift
更改批处理文件中可替换参数的位置 语法:Shift [/n] 设置批处理从第n个参数开始移位,n的值为0~8
@echo off:roundif "%0"=="" goto endecho %0内容如下:type %0echo.shiftgoto round:end
* 和 ?
*表示任意多个字符,包括0个?表示任意单个字符
@echo offif exist *.txt echo 当前文件夹下有文本文件echo 以a开头的目录如下:dir /d /w /b a*echo.echo 以dk开头、第三个字符为任意字符、第四个字符为t、扩展名为三个字符且以do开头的文件如下:dir /b /w dk?t.do?
<、>、>>
这批处理程序中的3个重定向符号,用于控制数据的输入或输出方式。<符号的右边是数据源,左边代表数据目的地;>及>>符号的左边是数据源,>会替换目的数据,而>>符号是将数据源添加到目标数据之后
@echo offecho 正在自动创建的批处理...echo type a.txt > auto.batecho dir /b /w >> auto.batecho 被自动创建的auto.bat文件的内容如下:type auto.batecho.echo 排序后的auto.bat为:sort < auto.bat
echo type a.txt > auto.bat是把 type a.txt输入到 auto.bat 中,替换echo dir /b /w >> auto.bat是把 dir /b /w追加到 auto.bat 中sort < auto.bat 是把 auto.bat 的内容 传递给 sort 进行排序
|
管道符|将一个命令的输出数据提取出来,然后将提取的数据作为另一个命令的输入
@echo offfind "naughty" story.txt | sort > result.txtecho 对包含“naughty”单词的行排序后如下:type result.txt
批处理首先在“story.txt"文件中找出所有包含“naughty”的行,接着将找出的结果通过|传给“sort" 命令进行排序,最后将排序结果保存到“result.txt" 文件
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~