bat - for 语句--批处理中字符串分割实现循环输出

这篇博客介绍了如何在批处理脚本中利用for循环和字符串分割对环境变量如PATH进行遍历,并展示了如何判断PATH中是否存在特定目录。通过示例代码,详细解释了批处理中的字符串分割技巧和条件判断,对于Windows批处理脚本编写者极具参考价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考文章:批处理中字符串分割实现循环输出

1.批处理 字符串分割 实例

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

主要解释for语句:

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

分割字符串

@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

2.批处理 遍历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
......
请按任意键继续. . .

3. 批处理 判断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

请按任意键继续. . .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值