我正在對批處理文件之一,我有一個具體的要求,我有一個字符串「text1,text2,text3,text4 ...等」 &我想有我作爲一個金字塔輸出像批處理文件CSV字符串到金字塔
的text1
文本1,文本2
文本1,文本2,文字3
文本1,文本2,文字3,文本4
..等
我的大腦說我t很容易實現,但沒有得到邏輯!我怎麼能通過批處理腳本(for循環)?
我正在對批處理文件之一,我有一個具體的要求,我有一個字符串「text1,text2,text3,text4 ...等」 &我想有我作爲一個金字塔輸出像批處理文件CSV字符串到金字塔
的text1
文本1,文本2
文本1,文本2,文字3
文本1,文本2,文字3,文本4
..等
我的大腦說我t很容易實現,但沒有得到邏輯!我怎麼能通過批處理腳本(for循環)?
以下方法允許您有一個逗號分隔值列表,其中可能包含空格或批處理特殊字符。當然,它也適用於你的簡單值。
@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&
你可以使用一個變量,在每個循環中,你可以在其上附加一個文本。您還需要激活delayedexpansion
,以便快速更新變量。 for /l %%a in (;;)
創建一個無限循環。
@echo off
setlocal enabledelayedexpansion
set var=text1
for /l %%a in (;;) do (
echo !var!
set var=!var!,text1
)
編輯:注意到你的數字實際增加。可以這樣做:的%%a
@echo off
setlocal enabledelayedexpansion
set var=text1
for /l %%a in (2,1,100) do (
echo !var!
set var=!var!,text%%a
)
感謝@konsolebox但文本1,文本2,文字3只是例子,我的情況是實際處理不同的字符串。儘管如此,我相信我會在別的地方使用這種邏輯。 – gbabu
@ ghabu不用擔心。歡迎:) – konsolebox
@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
命令默認定界符,只是遍歷列表串接值,因爲它們被處理
太棒了。它效果很好。我喜歡你的解決方案,因爲它可以處理特殊的字符。非常感激! – gbabu
請注意,這種方法失敗了通配符,即'*'和'?' – Aacini