2014-10-01 59 views
0

我有很多CSV。我想合併成一個大的,進一步的文件,我還需要保持文件名中的列2將CSV文件合併爲一個主文件並將文件名保留在列2中

我的CSV文件的內容

文件名ABNK102455

Column A 
12/215425 
12/125485 
12/215435 

文件名ABNK102456

Column A 
12/215425 
12/125485 
12/215435 

結果

Combined.CSV

Column A 
12/215425 ABNK102455 
12/125485 ABNK102455 
12/215435 ABNK102455 
12/215425 ABNK102456 
12/125485 ABNK102456 
12/215435 ABNK102456 

這是可能的,以及如何?

回答

2
@ECHO OFF 
SETLOCAL 
SET "sourcedir=U:\sourcedir" 
SET "mask=q*.csv" 
SET "headerlinegenerated=" 
(
FOR /f "delims=" %%a IN ('dir /a-d /b "%sourcedir%\%mask%"') DO (
    SET "headerline=" 
    FOR /f "usebackqdelims=" %%m IN ("%sourcedir%\%%~nxa") DO (
    IF NOT DEFINED headerlinegenerated SET "headerlinegenerated=Y"&ECHO %%m 
    IF DEFINED headerline ECHO %%m %%~na 
    SET headerline=Y 
) 
) 
)>newfile.txt 
GOTO :EOF 

你需要改變的sourcedir設置,以滿足您的具體情況。

我使用了一個名爲q26135599-1.csvq26135599-2.csv的文件,其中包含我的測試數據。您需要調整mask的設置以適應。

主要生產newfile.txt

最好不要嘗試在源目錄中創建newfile.txt.csv,除非你真的相信它不會被列入%mask%

+0

好方法在命令行上執行它......沒有想到那個... +1 – MikeD 2014-10-01 07:39:51

+0

Hi @ Magoo,非常感謝你的幫助,我將如何運行?看着這在CMD中完成,我對DOS不太好。 – user3906930 2014-10-01 10:12:36

+0

複製並粘貼到'filenameofyourchoosing.bat'。然後只需從'cmd'提示符下運行'filenameofyourchoosing'。如果你將'.bat'存儲在''path''中,那麼從哪個目錄運行它並不重要。或者,您可以爲'.bat'文件建立一個「快捷方式」,並通過點擊它從桌面運行它。 – Magoo 2014-10-01 10:47:25

0

,讓你去....

Sub Test() 
Dim Idx As Long 
Dim RowNum As Long 
Dim TargetRange As Range 
Dim FileName As String 

    RowNum = 1 
    Set TargetRange = ActiveSheet.[A1] 

    ' File selection loop 
    With Application.FileDialog(msoFileDialogFilePicker) 
     .AllowMultiSelect = True 
     ' use .Filters.Add ... to present only .txt, .csv files etc. 
     .Show 

     ' File processing loop 
     For Idx = 1 To .SelectedItems.Count 

      ' here you get each file name inc. full path ... one by one 
      FileName = .SelectedItems(Idx) 

      ' isolate filename 
      ' open file 

      ' while not end of file 
      '  read from file line by line into a string variable 
      '  place string into TargetRange(RowNum, 1) 
      '  place filename into TargetRange(RowNum, 2) 
      '  increment RowNuM 

     Next Idx 
    End With 
End Sub 
+0

嗨@MikeD,謝謝你這個VB代碼,也會看看我是否可以得到這個 – user3906930 2014-10-01 10:39:54

相關問題