批处理 字符串分割

批处理 字符串分割 实例

使用for命令可以对字符串进行分段处理。

分割字符串

@echo off
::定义一个以分号作为分隔的字符串
set str=AAA;BBB;CCC;DDD;EEE;FFF
::str的副本
set remain=%str%
:loop
for /f "tokens=1* delims=;" %%a in ("%remain%") do (
	::输出第一个分段(令牌)
	echo %%a
	rem 将截取剩下的部分赋给变量remain,其实这里可以使用延迟变量开关
	set remain=%%b
)
::如果还有剩余,则继续分割
if defined remain goto :loop
pause

主要解释for语句:

  • delims=;表示以分号作为分隔符,对remain字符串进行分割处理。
  • tokens=1*,tokens表示分段的方式,tokens=1*表示第一个分隔符;之前的作为一部分,剩下的(*表示)作为一部分。这两部分在循环体总可以用%%a表示第一部分,%%b表示第二部分。

批处理 遍历path环境变量

我们知道path环境变量也是以分号作为分隔符的,批处理中,所以同样可以用上面的代码来遍历path环境变量。

@echo off
setlocal enabledelayedexpansion 
::定义一个以分号作为分隔的字符串
set str=%path%
::str的副本
set remain=%str%
:loop
for /f "tokens=1* delims=;" %%a in ("%remain%") do (
	::输出第一个分段(令牌)
	echo %%a
	rem 将截取剩下的部分赋给变量remain,其实这里可以使用延迟变量开关
	set remain=%%b
)
::如果还有剩余,则继续分割
if defined remain goto :loop
pause

运行结果:

D:\dev\workspace\MarkdownTools
......
C:\windows\system32
D:\dev\java\jdk1.8.0_91\bin
F:\Program Files\nodejs\node_global
F:\Program Files\Git\bin
D:\dev\apache-maven-3.5.4\bin
......
请按任意键继续. . .

批处理 判断path环境变量中是否有某个目录

例如查找系统path环境变量中是否存在D:\dev\workspace\MarkdownTools这个目录:

@echo off
setlocal enabledelayedexpansion 
::定义一个以分号作为分隔的字符串
::set str=AAA;BBB;CCC;DDD;EEE;FFF
set str=%path%
::str的副本
set remain=%str%
set toFind=D:\dev\workspace\MarkdownTools
set isFind=false
:loop
for /f "tokens=1* delims=;" %%a in ("%remain%") do (
	if "%toFind%"=="%%a" (
		::设置标记,以便后续使用
		set isFind=true
		::找到了就不找了
		goto :finded
	)
	rem 将截取剩下的部分赋给变量remain,其实这里可以使用延迟变量开关
	set remain=%%b
)
::如果还有剩余,则继续分割
if defined remain goto :loop
:finded
echo %isFind%
pause

运行结果:

true
请按任意键继续. . .

参考资料

http://blog.51cto.com/langlichong/1851961

本文链接: 批处理 字符串分割

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
批处理中,可以通过使用内置的命令"set"和"echo"来将字符串转换为ASCII码。下面是一个示例代码,演示了如何将字符串转换为ASCII码: ``` @echo off setlocal enableDelayedExpansion set string=Hello World for /L %%i in (0,1,255) do ( set "char=!string:~%%i,1!" if defined char ( for /F %%a in ('echo !char! ^| xxd -p') do ( echo ASCII code of !char! is %%a ) ) ) ``` 在这个示例中,我们首先定义了一个字符串"Hello World"。然后,使用一个for循环遍历ASCII码的范围0-255。在每次循环中,我们使用"!string:~%%i,1!"从字符串中获取每个字符,并将其存储在变量"char"中。接下来,我们使用"echo !char! | xxd -p"命令将"char"变量的值转换为ASCII码,并通过"for /F"命令将转换后的结果存储在"%%a"变量中。最后,我们使用"echo"命令打印出每个字符对应的ASCII码。 请注意,上述示例中使用了"xxd"命令来进行ASCII码转换。在Windows系统中,默认情况下并不包含"xxd"命令。你可以通过安装Cygwin或者GnuWin32等工具包来获得"xxd"命令。另外,还可以使用其他编程语言如Python或者Java来实现字符串转ASCII码的功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [转:批处理分割字符串](https://blog.csdn.net/zhju85126com/article/details/46649961)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【WINDOWS / DOS 批处理】if命令中的比较运算符](https://blog.csdn.net/mt15306338066/article/details/127589183)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值