我正在尝试创建一个报告,该报告将为每一行拆分为下一行。我的数据:
I,have,a,report,to,split,|,into,next,row
my,second,line,should,also,|,split,like,before
那么它应该是这样的:
I,have,a,report,to,split
into,next,row
my,second,line,should,also
split,like,before
我试过这个脚本:
@echo off
setLocal
for /f "tokens=1 delims=.|" %%a in (input.csv) do echo %%a
for /f "tokens=2 delims=.|" %%a in (input.csv) do echo %%a
但结果是:
I,have,a,report,to,split
my,second,line,should,also
into,next,row
split,like,before
有人能帮我吗?提前感谢…
您的结果示例是错误的。这是您代码的输出:
I,have,a,report,to,split,
my,second,line,should,also,
,into,next,row
,split,like,before
注意第1行和第2行末尾以及第3行和第4行开头的逗号
这种方法有效:
@echo off
setlocal EnableDelayedExpansion
rem Define a variable with CR+LF ASCII chars:
for /F %%a in ('copy /Z "%~F0" NUL') do set CRLF=%%a^
%empty line 1/2%
%empty line 2/2%
rem Change each ",|," string by CR+LF characters
for /F "delims=" %%a in (input.csv) do (
set "line=%%a"
for %%N in ("!CRLF!") do echo !line:,^|,=%%~N!
)
当然,您也可以使用"传统">:/
方式:
@echo off
setlocal EnableDelayedExpansion
for /F "tokens=1,2 delims=|" %%a in (input.csv) do (
set "left=%%a"
set "right=%%b"
echo !left:~0,-1!
echo !right:~1!
)