Windows
BAT脚本
BAT批处理中的字符串处理
BAT脚本日期时间获取
BAT批处理脚本中文乱码的解决
BAT方式实现企业微信群机器人告警
BAT脚本映射共享文件夹为盘符
视频图片下载
全球通用的实用卫星地图
IP
iP地址归属地查询
Microsoft Office
Microsoft Office 产品秘钥
[转]分享几款微软官方Office卸载工具与使用方法
网络空间搜索引擎
Windows一些环境变量
随身 wifi
海康威视硬盘录像机巡检报告生成工具
Window系统断电时间日志查询
Chrome 浏览器离线下载地址
国家地区代码
国际电话区号列表
Windows刷新图标缓存
解决文件选择窗口中无法显示网络磁盘的问题
本文档使用 MrDoc 发布
-
+
首页
BAT批处理中的字符串处理
### 字符串查找 1. 字符串查找:find `ping baidu.com -4 -n 1 | find “baidu.com”` 1.字符串查找增强:findstr findstr类似Linux中的grep cmd中使用 `ping baidu.com -4 -n 1 | findstr "baidu.com"` ```bash C:\Users\local>ping baidu.com -4 -n 1 | findstr "baidu.com" 正在 Ping baidu.com [220.181.38.251] 具有 32 字节的数据: C:\Users\local> ``` bat脚本中使用 `ping baidu.com -4 -n 1 ^| findstr "baidu.com"`,其中|要用转义字符^ `^|findstr /n .^|findstr “^1:”` 第一个和第二个 ^| 因为在for循环的(‘’)中,|要用转义字符^ 第三个”^1:” 在findstr的参数中查找字符用^表示以后面紧跟的字符开头,也就是以1:开头的行. ### 截取字符串 ```bash @echo off set ifo=abcdefghijklmnopqrstuvwxyz0123456789 echo 原字符串(第二行为各字符的序号): echo %ifo% echo 123456789012345678901234567890123456 echo 截取前5个字符: echo %ifo:~0,5% echo 截取最后5个字符: echo %ifo:~-5% echo 截取第一个到倒数第6个字符: echo %ifo:~0,-5% echo 从第4个字符开始,截取5个字符: echo %ifo:~3,5% echo 从倒数第14个字符开始,截取5个字符: echo %ifo:~-14,5% pause ``` 当然,上面的例子只是将字符串处理的基本功能展示出来了,还看不出字符串处理具体有什么用处。下面这个例子是对时间进行处理。 echo 当前时间是:%time% 即 %time:~0,2%点%time:~3,2%分%time:~6,2%秒%time:~9,2%厘秒 ```bash C:\Users\local>echo 当前时间是:%time% 即 %time:~0,2%点%time:~3,2%分%time:~6,2%秒%time:~9,2%厘秒 当前时间是:15:49:08.70 即 15点49分08秒70厘秒 ``` ### 替换字符串 替换字符串,即将某一字符串中的特定字符或字符串替换为给定的字符串。举例说明其功能: ```bash @echo off set aa=伟大的中国!我为你自豪! echo 替换前:%aa% echo 替换后:%aa:中国=中华人民共和国% echo aa = %aa% set "aa=%aa:中国=中华人民共和国%" echo aa = %aa% pause ``` 对于上面的例子有一点说明,对比两个echo aa = %aa%可以发现,如果要修改变量aa的内容的话,就需要将修改结果“%aa:中国=中华人民共和国%”赋值给变量aa。上面的字符串截取也有着同样的特点。 ### 字符串合并 ```bash set aa=伟大的中国! set bb=我为你自豪! echo %aa%%bb% #伟大的中国!我为你自豪! echo aa=%aa% #a=伟大的中国! echo bb=%bb% #bb=我为你自豪! set "aa=%aa%%bb%" echo %aa% #伟大的中国!我为你自豪! ``` ### 扩充字符串 扩充”这个词汇来自于微软自己的翻译,意思就是对表示文件路径的字符串进行特殊的处理,具体功能罗列如下: ```bash ========================================= ~I - 删除任何引号("),扩充 %I %~fI - 将 %I 扩充到一个完全合格的路径名 %~dI - 仅将 %I 扩充到一个驱动器号 %~pI - 仅将 %I 扩充到一个路径 %~nI - 仅将 %I 扩充到一个文件名 %~xI - 仅将 %I 扩充到一个文件扩展名 %~sI - 扩充的路径只含有短名 %~aI - 将 %I 扩充到文件的文件属性 %~tI - 将 %I 扩充到文件的日期/时间 %~zI - 将 %I 扩充到文件的大小 %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充 到找到的第一个完全合格的名称。如果环境变量名 未被定义,或者没有找到文件,此组合键会扩充到 空字符串 可以组合修饰符来得到多重结果: %~dpI - 仅将 %I 扩充到一个驱动器号和路径 %~nxI - 仅将 %I 扩充到一个文件名和扩展名 %~fsI - 仅将 %I 扩充到一个带有短名的完整路径名 %~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充 到找到的第一个驱动器号和路径。 %~ftzaI - 将 %I 扩充到类似输出线路的 DIR ========================================= ``` 以上内容引用于for /?帮助信息。其中的I代表变量I,不过需要说明的是,不是所有的变量都能够进行扩充的,有两个条件:1、该字符串代表一个文件路径;2、变量要用%x来表示,x可取a-z A-Z 0-9共62个字符中的任意一个。举例说明: ```bash @echo off echo 正在运行的这个批处理: echo 完全路径:%0 echo 去掉引号:%~0 echo 所在分区:%~d0 echo 所处路径:%~p0 echo 文件名:%~n0 echo 扩展名:%~x0 echo 文件属性:%~a0 echo 修改时间:%~t0 echo 文件大小:%~z0 pause ``` 其中的%0是批处理里面的参数,代表当前运行的批处理的完全路径。类似的还有%1-%9,分别代表传递来的第1-9个参数。例子如下: ```bash @echo off set aa=C:\Windows\PPP\a.btx call :deal aaa %aa% "c c" ddd eee pause>nul exit :deal echo %%0 = %0 echo %%1 = %1 echo %%2 = %2 echo %%3 = %3 echo %%4 = %4 echo %%5 = %5 ``` 其中,变量aa在之前是不可以扩充的,通过call命令并将aa作为参数传递给子函数:deal,将aa变量转换成了变量%1,即符合%x格式,从而可以进行字符串扩充。 至于%x中x取a-z A-Z的形式,可以复习一下for语句,for语句里面的变量就是用%x来表示的,因而可以直接进行扩充 参考文章:https://www.jb51.net/article/52744.htm
字符串
admin
2024年6月27日 14:11
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码