批处理 字符串分割

批处理 字符串分割 实例

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

分割字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@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环境变量。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@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

运行结果:

1
2
3
4
5
6
7
8
9
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这个目录:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@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

运行结果:

1
2
true
请按任意键继续. . .

参考资料

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