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

  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)
  • 19
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows下,可以使用bat批处理脚本来批量检测远程端口。Telnet是一种远程终端连接服务,可以通过它来连接到远程主机的特定端口。以下是一个使用Telnet命令在批处理脚本中批量检测远程端口的例子: @echo off setlocal set ip_list=file_path\ip_list.txt set port=80 for /f %%i in (%ip_list%) do ( telnet %%i %port% | find "Connected" > nul if errorlevel 1 ( echo %%i:%port% is closed ) else ( echo %%i:%port% is open ) ) pause 在以上示例中,首先我们定义了要检测的IP列表文件的路径,即ip_list.txt文件,然后我们设定了要检测的端口号,此处设定为80端口。接着使用for循环读取ip_list.txt文件中的每个IP地址。 在每次循环中,我们使用telnet命令连接到远程主机的指定端口。如果端口成功连接,则表示端口是开放的,telnet命令的输出会包含"Connected"关键字。我们使用find命令查找telnet命令的输出中是否包含"Connected"关键字。 如果find命令找到了"Connected"关键字,则说明端口是开放的,我们将显示"IP地址:端口号 is open"的消息。否则,即端口未连接,我们将显示"IP地址:端口号 is closed"的消息。 最后,我们使用pause命令来暂停脚本的运行,以便我们可以查看检测结果。 需要注意的是,Telnet命令在默认情况下可能未启用,需要手动在Windows设置中启用Telnet客户端功能。此外,Telnet命令在Windows 10及更高版本中可能已被淘汰,可以考虑使用其他工具如ncat或PowerShell来代替Telnet命令进行远程端口检测。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值