2016-07-14 40 views
2

我正在處理一個批處理文件,將多個csv文件合併爲一個較大的文件,同時刪除標題行。批量組合文件無標題

它可以工作,但不會合並目錄中的所有csv文件。例如,如果我有4個csv文件,它只會合併前兩個文件。

下面是代碼:

@echo off 
cd "C:\TheFileDirectory" 
setlocal 
set first=1 
>bigfile.csv. (
    for %%F in (*.csv) do (
     if defined first (
      type "%%F" 
      set "first=" 
     ) else more +1 "%%F" 
    ) 
) 
+4

您可以嘗試將輸出轉儲到'bigfile.new',然後在循環'ren bigfile.new bigfile.csv'的末尾輸出。我想知道是否你的'for'循環在它的集合中包含了bigfile.csv,並導致試圖將自身追加到自身的問題。 – rojo

+0

@rojo偉大的想法!只是給了它一個鏡頭,仍然有問題。 – Reggie

+0

您的CSV文件很大嗎?我認爲64k的「更多」尺寸限制,但我可能會誤解。如果你的第二個csv文件超過64k,也許這就是導致你的腳本死掉的原因(儘管我希望輸出能夠截斷文件並且循環繼續)。如果一切都失敗了,你可以使用PowerShell代碼片段。 'powershell「$ i = 1; gci * .csv |%{if($ i){$ i = 0; gc $ _} else {gc $ _ | select -skip 1}}」> out&ren out。 cmd控制檯中的csv',或者在.bat腳本中加倍'%'。 – rojo

回答

0

不同的方法:

做一個FOR循環對所有* .csv檔案來

做一個FOR循環在CSV文件中的所有行而跳過第一行

ECHO CSV文件的行並將輸出重定向到bigfile >>