2014-07-22 74 views
1

我正在對批處理文件之一,我有一個具體的要求,我有一個字符串「text1,text2,text3,text4 ...等」 &我想有我作爲一個金字塔輸出像批處理文件CSV字符串到金字塔

的text1
文本1,文本2
文本1,文本2,文字3
文本1,文本2,文字3,文本4
..等

我的大腦說我t很容易實現,但沒有得到邏輯!我怎麼能通過批處理腳本(for循環)?

回答

2

以下方法允許您有一個逗號分隔值列表,其中可能包含空格或批處理特殊字符。當然,它也適用於你的簡單值。

@echo off 
setlocal EnableDelayedExpansion 

set "string=text one,text <two>,text |three|,text &four&" 
set "line=" 
for %%a in ("%string:,=","%") do (
    set "line=!line!%%~a," 
    echo !line:~0,-1! 
) 

輸出:

text one 
text one,text <two> 
text one,text <two>,text |three| 
text one,text <two>,text |three|,text &four& 
+0

太棒了。它效果很好。我喜歡你的解決方案,因爲它可以處理特殊的字符。非常感激! – gbabu

+0

請注意,這種方法失敗了通配符,即'*'和'?' – Aacini

1

你可以使用一個變量,在每個循環中,你可以在其上附加一個文本。您還需要激活delayedexpansion,以便快速更新變量。 for /l %%a in (;;)創建一個無限循環。

@echo off 
setlocal enabledelayedexpansion 
set var=text1 
for /l %%a in (;;) do (
    echo !var! 
    set var=!var!,text1 
) 

編輯:注意到你的數字實際增加。可以這樣做:的%%a

  • 1 =每循環
  • 100 =最大數量增量

    @echo off 
    setlocal enabledelayedexpansion 
    set var=text1 
    for /l %%a in (2,1,100) do (
        echo !var! 
        set var=!var!,text%%a 
    ) 
    
    • 2 =初始值,但只相對於條件。印刷最大數爲100 - 1或99
  • +0

    感謝@konsolebox但文本1,文本2,文字3只是例子,我的情況是實際處理不同的字符串。儘管如此,我相信我會在別的地方使用這種邏輯。 – gbabu

    +0

    @ ghabu不用擔心。歡迎:) – konsolebox

    2
    @echo off 
        setlocal enableextensions enabledelayedexpansion 
    
        set "text=text1,text2,text3,text4,text5,text6,text7,text8" 
        set "output=" 
    
        for %%a in (%text%) do (
         if defined output (set "output=!output!,%%a") else set "output=%%a" 
         echo(!output! 
        ) 
    

    作爲值與逗號分隔和逗號是for命令默認定界符,只是遍歷列表串接值,因爲它們被處理