2014-11-05 58 views
0

我的最终目标是采用类似“ab; cd; efg”的字符串,并对由';'分隔的每个标记执行操作,其中包含for循环分别处理由'。'分隔的每个子词。批处理嵌套循环,拆分字符串然后拆分每个标记

我有分裂原点输入像这样:

FOR %%i IN (%input%) DO (
    ECHO %%i 
) 

这似乎是工作,但现在我不能使用:.=;语法来获得%%我准备再次分裂。我试过SET iVar=%%i然后能够使用此语法但SET不起作用,iVar保持空。我确实有EnableDelayedExpansion集。

为了澄清,如果循环变量是在批处理只是正常的变量我最后的脚本将是这样的:

FOR %i% IN (%input%) DO (
    ECHO %i% 
    FOR %j% in (!i:.=;!) DO (
    ECHO %j% 
) 
) 

和输出将

a.b 
a 
b 
c.d 
c 
d 
e.f.g 
e 
f 
g 

回答

1

尝试这样的:

@echo off 
setlocal enabledelayedexpansion 
set "$input=a.b;c.d;e.f.g" 
for %%a in (%$input%) do (
    echo %%a 
    set "$int=%%a" 
    set "$int=!$int:.= !" 
    for %%b in (!$int!) do echo %%b) 
+0

谢谢!我想我实际上是在早些时候尝试这个解决方案,但认为'set $ int = %% a'因为我以后使用'%'而不是'''而不工作。 – joejohn 2014-11-05 01:07:58