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

时间:2016-11-02 15:33:49

标签: batch-file split delimiter

我正在尝试使用delimiter =将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的问题,只是作为字符串添加。我将如何为每个分割而导致分割,并将字符串放到换行符上?

2 个答案:

答案 0 :(得分:1)

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

每行依次放入%%a

使用默认列表分隔符(空格,逗号,分号),%%i依次从%%a%%i

的行分配每个标记

答案 1 :(得分:1)

此版本还可以处理包含*?等内容的空列和列。

@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删除外部引号,以检索所需的列内容