Batch file 循环遍历批处理文件中以逗号分隔的字符串

Batch file 循环遍历批处理文件中以逗号分隔的字符串,batch-file,Batch File,为什么要使用此代码: @echo OFF SETLOCAL EnableDelayedExpansion SET /A i=0 FOR /F "USEBACKQ tokens=* delims=," %%a IN (`echo aaa,bbb,ccc`) DO ( SET /A i+=1 echo !i! %%a ) 给我这个输出 1 aaa bbb ccc 当我想要这个的时候: 1 aaa 2 bbb 3 ccc 编辑:echo aaa、bbb、ccc是为了模拟一个

为什么要使用此代码:

@echo OFF
SETLOCAL EnableDelayedExpansion
SET /A i=0

FOR /F "USEBACKQ tokens=* delims=," %%a IN (`echo aaa,bbb,ccc`) DO (
SET /A i+=1
echo !i! %%a
)
给我这个输出

1 aaa bbb ccc
当我想要这个的时候:

1 aaa
2 bbb
3 ccc

编辑:echo aaa、bbb、ccc是为了模拟一个命令,我需要解析命令的输出

@Echo关闭
SetLocal EnableExtensions EnableDelayedExpansion
设置“i=0”
对于%%G英寸(aaa、bbb、ccc)的,请执行以下操作(
设置/A i+=1
回声!我!%%G
)
暂停
@Echo关闭
SetLocal EnableExtensions DisableDelayedExpansion
设置“i=0”
对于%%G英寸(aa!a,b!bb,ccc!),请执行以下操作(
设置/A i+=1
SetLocal EnableDelayedExpansion
对于(!i!)中的%%H,执行Endlocal和Echo%%H%%G
)
暂停
@Echo关闭
SetLocal EnableExtensions DisableDelayedExpansion
设置“i=0”
对于%%G英寸(“aa|a”、“b&bb”、“ccc!”)请执行以下操作(
设置/A i+=1
SetLocal EnableDelayedExpansion
对于(!i!)中的%%H,执行Endlocal和Echo%%H%%~G
)
暂停
[Edit/]
基于您糟糕的修改和缺乏支持信息,我目前愿意提供以下所有内容作为回报:

@Echo关闭
SetLocal EnableExtensions DisableDelayedExpansion
设置“结果=”
对于/F Delims^=^EOL^=%%G In('Echo aaa,bbb,ccc'),请设置“Result=%%G”
如果未定义结果转到:EOF
设置“i=0”
对于%%G In(%Result%)执行(
设置/A i+=1
SetLocal EnableDelayedExpansion
对于(!i!)中的%%H,执行Endlocal和Echo%%H%%G
)
暂停

基于您有限的信息,这可能会解决您的问题

@echo OFF
SETLOCAL EnableDelayedExpansion
SET /A i=0

FOR /F "tokens=1-3 delims=," %%G IN ('"echo aaa,bbb,ccc"') DO (
    SET /A i+=1
    echo !i! %%G
    SET /A i+=1
    echo !i! %%H
    SET /A i+=1
    echo !i! %%I
)

您要求将所有令牌分配给
%%a
令牌=*
),这就是您得到的!您可能需要一个普通的
for
循环:
for%%a IN(aaa、bbb、ccc)DO(
很抱歉不够清晰:
echo aaa、bbb、ccc
是用来模拟命令输出的,我需要解析命令的输出。你必须更好地处理你的问题,因为正如你已经看到的,它已经根据你发布的内容得到了回答。这是一个技术网站,所以不要试图模拟某些东西,按实际情况给我们。@Wergio是什么阻止了你定义正确的代币数量?什么赌
aaa、bbb、ccc
现在更像
aaa、bbb、ccc、ddd、eee、fff、ggg、hhh、iii、jjj、kkk、lll、mmm、nnn、ooo、ppp、qqq、rrr、sss、ttt、uuu、vvv、www、xxx、yyy、zzz>他们不想要所有这些重复的行?那是在我们发现每个角色可能包含的字符之前!