2013-02-04 190 views
0

我可能在不同的時間有我需要合併的.csv文件。他們有相同的標題和列布局。我只需要一種簡單的方法在Windows 7中將它們結合起來。用戶可能並不總是安裝有Excel。在Windows中合併CSV文件(最好是.cmd或.bat文件)

一個.cmd宏會很好,但我在網上找到的那個宏不起作用。

最好到目前爲止,我已經得到了是這樣的:

「打開命令窗口(」 cmd.exe的「),然後鍵入以下兩行(無支架)

cd "Desktop\[csv-files]" 
type *.csv > my-new-file.csv" 

Where the files to be combined are in Desktop\[csv-files]. 

但是 - 它似乎創建了重複項(或在某些情況下一式三份)的聯合條目。例如,我有2個文件,我測試了23和26個唯一條目,我分出100個條目並至少有一個條目重複了3次。

現在我測試的.csv文件只有〜25 entr很長,但最終可能會達到數千甚至更多。

回答

2

聽起來像使用*.csv時出現問題,並將輸出重定向到同一文件夾中的.csv文件。 DOS似乎找到my-new-file.csv文件,因爲*.csv輸入它本身...您可以使用不同的輸出文件擴展名,直到type命令完成後,然後您可以重命名輸出文件...類似於:

cd "Desktop\[csv-files]" 
type *.csv > my-new-file.txt 
ren my-new-file.txt my-new-file.csv 

您也可以跳過每個文件的文件頭後的第一個,讓你不會在整個輸出文件的中部,文件頭告終。請嘗試以下操作:

@echo off 

setlocal ENABLEDELAYEDEXPANSION 

set cnt=1 
cd "Desktop\[csv-files]" 

for %%i in (*.csv) do (
    if !cnt!==1 (
    for /f "delims=" %%j in ('type "%%i"') do echo %%j >> my-new-file.txt 
) else (
    for /f "skip=1 delims=" %%j in ('type "%%i"') do echo %%j >> my-new-file.txt 
) 
    set /a cnt+=1 
) 

setlocal 

ren my-new-file.txt my-new-file.csv