2025年5月21日 星期三 乙巳(蛇)年 二月廿三 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > DOS/BAT与(脚本)

windows bat批处理脚本 字符串截取、拼接、查找等使用说明

时间:04-14来源:作者:点击数:54

BAT批处理有着具有非常强大的字符串处理能力,其功能虽没有C、Python等高级编程语言丰富,但是常见的字符串截取、替换、连接、查找等功能也是应有尽有,本文逐一详细讲解。

1、字符串截取

百学不如一练,直接上字符串截取案例代码,如下:

vstr1.bat

  • @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、字符串替换

替换字符串,即将某一字符串中的特定字符或字符串替换成指定的字符串,DEMO如下:

vstr2.bat

  • @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="中国,加油!"
3、字符串连接

较常见编程语言用 + 或 strcat函数 进行字符串拼接而言,bat脚本的字符串连接则更简单,但是功能也相对较弱,DEMO如下:

  • @echo off & setlocal
  • set aa=武汉
  • set bb=加油
  • rem 武汉, 加油
  • echo %aa%, %bb%
  • rem 武汉, 加油 赋值给aa变量
  • set "aa=%aa%, %bb%"
  • echo aa=%aa%
  • pause
4、字符串查找

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

vfind_data.txt

  • Hello, Marcus!
  • hello, marcus!
  • Please say hello
  • 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"
  • 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)
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门