将每个分隔符的值拆分为单独的行 - 批处理

Split values into separate lines for each delimiter - batch

我正在尝试使用定界符= 将 csv 文件的值拆分为单独的行,作为拆分点。即

#csv file 
video1,video2,video3
video4,video5,video6

#Preferred output:
video1,
video2,
video3,
ect....

到目前为止我有:

@echo off
setLocal EnableDelayedExpansion
for /f "tokens=* delims=, " %%a in (input.csv) do (
set /a N+=1
echo ^%%a^,>>output.csv
)

但是我 运行 遇到了参数 %%a 只是作为字符串添加的问题。我将如何为 each 导致拆分,并将字符串放到换行符上?

@echo off
setLocal 
for /f "delims=" %%a in (input.csv) do (
 for %%i in (%%a) do echo %%i,>>output.csv
)

每行依次放入%%a

使用默认的列表定界符(space、逗号、分号),%%i 依次将每个标记从 %%a 中的行分配到 %%i

此版本还可以处理空列和包含 *?.

等内容的列
@echo off
setLocal EnableDelayedExpansion
for /f "delims=" %%a in (input.csv) do (
    set "line=%%a"
    echo reading line: !line!
    for /F "delims=" %%C in (""!line:^,^=^"^

"!"^") do (
        set "col=%%~C"
        echo   - !col!
    )
)

诀窍在于,;将被替换为 "<newline>" 并在行首和行尾添加引号。

video1,,video3 将更改为

"video1"  
""
"video3"

%%~C 删除外引号,以检索所需的列内容