如何循环访问CSV文件,跳过前5行并写入合并的CSV

时间:2015-12-12 16:06:10

标签: windows batch-file

我在目录中有一堆CSV文件。我想循环遍历每个文件,删除每个文件中的前5行,并将剩余的行写入CSV文件“Consolidated_wo_first5.csv”。我的文件是“;”分离。

我的Windows脚本:

set sourcedir=C:\transport\in
set targetdir=C:\transport\out

for %%F in (%sourcedir%\*.csv) do (for %%f "skip=5 tokens=* delims=;" in (%%~nf) do echo %%a)>>%targetdir%\Consolidated_wo_first5.csv

示例输入文件:

Row1 ;Row1;Row1
Row2;Row2;Row2
Row3;Row3;Row3
Row4;Row4;Row4
Row5;Row5;Row5
Row6;Row6;Row6
Row7;Row7;Row7

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

代码中的一些小细节:

set sourcedir=C:\transport\in
set targetdir=C:\transport\out

(for %%F in (%sourcedir%\*.csv) do (
   for /F "usebackq skip=5 delims=" %%f in ("%%F") do (
      echo %%f
   )
)) > %targetdir%\Consolidated_wo_first5.csv
  • %% f和%% F错位。
  • 在第二个FOR中错过了/ F选项,并且%% f在错误的位置
  • 如果您想要完整的行,则更容易使用“delims =”
  • 方便将文件名括在引号中,在这种情况下需要“usebackq”选项。
  • 如果>>附加重定向被>替换一个更改,程序运行得更快,在这种情况下,整个FOR必须括在括号中。