将每个分隔符的值拆分为单独的行 - 批处理
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
删除外引号,以检索所需的列内容
我正在尝试使用定界符= 将 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
删除外引号,以检索所需的列内容