String 如何按字符集合拆分字符串?

String 如何按字符集合拆分字符串?,string,batch-file,for-loop,String,Batch File,For Loop,我有一个包含子字符串的字符串,子字符串由一组字符分隔,如,,,,-,和其他可能。我需要将该字符串拆分为尽可能多的子字符串。我需要了解如何使用for循环进行拆分,以便在需要时添加其他字符 示例: set string=aaa,bbb.ccc-ddd;eee for /f "tokens=1* delims=-.," %%a in ("%string%") do ( echo %%a, %%b ) 在这个例子中,我需要得到5个子字符串的结果:aaa,bbb,ccc,ddd,eee。在for循环中,

我有一个包含子字符串的字符串,子字符串由一组字符分隔,如
-
和其他可能。我需要将该字符串拆分为尽可能多的子字符串。我需要了解如何使用for循环进行拆分,以便在需要时添加其他字符

示例:

set string=aaa,bbb.ccc-ddd;eee
for /f "tokens=1* delims=-.," %%a in ("%string%") do ( echo %%a, %%b )
在这个例子中,我需要得到5个子字符串的结果:aaabbbcccdddeee。在for循环中,我想处理这些子字符串中的每一个,就像在普通编程语言中一样。但这让我很难受


我喜欢aaabbb.ccc-ddd;eee。只有2个子字符串。我做错了什么?也可能有1000个子字符串。

FOR/F
将一行拆分为多个标记(最多31个),但必须定义这些标记

for /f "tokens=1-31 delims=-.," %%a in ("%string%") do ( echo %%a, %%b, %%c %%d, %%e, %%f, ... )
但在你的情况下,这是没有用的,最多有100个代币

但是您可以强制/F
FOR/F
假设它得到多行,并且对于每一行,标记化再次开始

(set \n=^
%=EMPTY=%
)
setlocal EnableDelayedExpansion
FOR %%L in ("!\n!") do (
    set "multiLine=!string:-=%%~L!"
    set "multiLine=!multiLine:;=%%~L!"
    set "multiLine=!multiLine:,=%%~L!"
    set "multiLine=!multiLine:.=%%~L!"
)
for /f "tokens=*" %%a in ("!multiLine!") do ( 
    echo # %%a
)
首先,它将替换所有字符
-到换行符
\n


/F
以每行为基础工作,因此每个循环中都有一部分
%%a
您的意思是没有其他方法可以分割字符串?@Bitterblue有一些。但他们使用了更先进的技术