批处理(bat)命令整理

本文详细介绍了批处理文件(.bat或.cmd)中的字符串操作,包括截取、替换和查找命令的使用方法。例如,利用`echo%str:~n,m%`进行字符串截取,`setstr1=%str:~0,4%`进行赋值,以及`find`和`findstr`命令进行文本查找,同时提到了批处理中的条件处理和错误级别检查等基本操作。
摘要由CSDN通过智能技术生成
批处理文件的文件后缀为bat或者cmd

1.查看批处理定义

help START(批处理命令-必须大写)

字符串操作
2.1 字符串截取

@echo off & setlocal

rem strlen=31
set str=This is a string function demo.

rem 倒数第5位开始,取4位:demo
echo %str:~-5,4%

rem 倒数第5位开始,取剩余所有字符:demo.
echo %str:~-5%

rem 倒数第100位开始,返回从0位开始的字符串:This is a string function demo.
echo %str:~-100%

rem 倒数第0位开始,取4位:This
echo %str:~0,4%

rem 倒数第0位开始,取所有字符:This is a string function demo.
echo %str:~0%

rem 倒数第0位开始,取100位超出长度,返回:This is a string function demo.
echo %str:~0,100%

rem 截取字符串赋值给变量
set str1=%str:~0,4%
echo str1=%str1%

rem 显示系统时间,去掉后面的毫秒显示
echo %time:~0,8%

2.2 字符串替换

@echo off & setlocal

set str1="This is a string replace demo!"
echo 替换前:str1=%str1%
echo 空格替换成#:str1=%str1: =#%
echo=

set str2="武汉,加油!"
echo 替换前:str2=%str2%
echo 武汉替换成中国:str2=%str2:武汉=中国%

运行结果

替换前:str1="This is a string replace demo!"
空格替换成#:str1="This#is#a#string#replace#demo!"

替换前:str2="武汉,加油!"
武汉替换成中国:str2="中国,加油!"

2.3 字符串查找
字符串查找有两个命令:find和findstr,简单理解findstr是find的加强版(除 /C 只显示匹配到的行数外,其它都可实现),并且支持正则表达式。两者具体用法可以查看使用说明:find /? 或者 findstr /?,

Hello, Marcus!
hello, marcus!
Please say hello

find用例

rem vfind.bat
@echo off & setlocal
rem vfind_data.txt中查找包含Hello字符串的行,区分大小写
rem 只找到Hello, Marcus!
find "Hello" vfind_data.txt

rem vfind_data.txt中查找包含Hello字符串的行,不区分大小写
rem 三行都会找到
find /i "hello" vfind_data.txt

rem vfind_data.txt中查找不包含please字符串的行,不区分大小写
rem 找到hello 开头的两行
find /v /i "please" vfind_data.txt

rem 字符串作为输入,查找该字符串中是否包含“hello”
rem 输出Hello, marcus!
echo Hello, marcus! | find /i "hello"

findstr实例

rem vfindstr.bat
@echo off & setlocal
rem 查找文件vfind_data.txt中包含Hello字符串的行,区分大小写
findstr "Hello" vfind_data.txt

rem 查找hello开头的行,不区分大小写;数字比较请排除双引号、空格干扰
findstr /i "^hello" vfind_data.txt

rem 查找hello结尾的行,不区分大小写;数字比较请排除双引号、空格干扰
rem 文件最后一行若不是空白行,则最后一行hello$ 匹配不到,字符串查找时hello$也匹配不到
findstr /i "hello$" vfind_data.txt

echo Hello, marcus! | findstr /i "hello"

rem 找到输出found,没找到输出not found
echo Hello, marcus! | findstr /i "hello" > nul && (echo found) || (echo not found)

2.2 字符串连接

@echo off & setlocal

set aa=武汉
set bb=加油
rem 武汉, 加油
echo %aa%, %bb%

rem 武汉, 加油 赋值给aa变量
set "aa=%aa%, %bb%"
echo aa=%aa%
pause

常用命令

1. echo off 关闭回显 echo空格 查询当前计算机的回显状态 echo+空格|特殊字符+信息 显示信息 echo 文件内容>文件名 将内容输出到指定文件中 echo 文件内容>>文件名 将内容追加到指定文件 
2. pause 暂停批处理程序,并显示以下消息:请按任意键继续...。pause>nul只暂停,不显示任何信息,并且光标移动到下一行
3. rem和:: 注释 二者区别(关闭回显时,两者后面的内容都不会显示,打开回显时,rem后面的内容会显示,::后面的内容不会显示)
4. @关闭当前行的回显,无论echo是否打开
5. title [string] 设置命令提示窗口的窗口标题
6. color [attr] 设置默认的控制台前景和背景颜色 attr颜色属性由两个十六进制数字指定。无法对文字作部分设置
7. mode 配置系统设备 功能1:设置窗口大小;功能2:显示代码页(mode con cp select=9368. goto 无条件跳转命令。goto :eof一条完整命令,退出批处理。另外两个退出命令为exit exit /b。三者的区别 goto :eof 返回并等待下一条命令;exit 直接关闭
9. start 启动另一个窗口运行指定的程序或命令
10. call 跳转命令 从目标位置开始执行结束后,又重新回到原来的位置继续往下执行,而goto则不会返回
11. shift [/n] 更改批处理文件中可替换参数的位置 shift /2 表示%3移位到%2,将%4移位到%3。
12. errorlevel 程序返回码,0表示执行正确,
13. if 执行批处理程序中的条件处理。if [not] errorlevel number do command这个句子必须放在某一个命令的后面,执行该命令后才由 if errorlevel来判断命令的返回值;if [not] string1==string2; if [not] exist filename do command用于判断存在情况
14. setlocal enabledelaydexpansion 延迟命令(set设置,local本地,enable能够,delay延迟,expansion扩展)
15. fjdal;j
16. fjd;a
17. 

注意事项

18. bat文件中等号和操作数之间不能有空格
19. 批处理中’\‘和’-‘作用相同,作用都是命令的选项
20. 批处理中的转移字符为^.输出^ > >> & && | ||符号时,需要转义 
21. 批处理不支持浮点数
22. 输出大量数据用set命令,echo命令每行只能输出一个数据
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MSDN_lsx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值