Here’s a useful tip if you ever need to combine multiple CSV files into one CSV file.
For example, if you have multiple CSV files but need to run a single report (such as a crystal report) based on the data.
Option 1 – Combine CSV files without a header row
The following single command line will combine all CSV files in the folder as a single file titled ‘combined.csv’
copy *.csv combined.csv
If you want to run this from a cmd file, copy the following contents into a text file and save as ‘run.cmd’.
This command will automatically run from the folder the file is saved in, that is – if you save it to C:\TEMP it will look for CSV files in C:\TEMP and save the new file to C:\TEMP
@echo off copy %~dp0*.csv %~dp0combined.csv
Option 2 – Combine CSV files with header row
So what if your source files have a header row? The following command will take the header from the first file, then exclude it from the rest. Copy the following contents into a text file and save as ‘run.cmd’.
@ECHO OFF REM Set working directory pushd %~dp0 REM Delete existing combined file del combined.csv setlocal ENABLEDELAYEDEXPANSION set total=0 set count=0 REM Set total for %%i in (*.csv) DO set /a total+=1 for %%i in (*.csv) DO ( cls echo:Combining CSV files [!count!/%total%] if !count!==0 ( for /f "delims=" %%j in ('type "%%i"') do echo %%j >> combined.csv ) else if %%i NEQ combined.csv ( for /f "skip=1 delims=" %%j in ('type "%%i"') do echo %%j >> combined.csv ) set /a count+=1 ) ECHO Finished PAUSE >NUL
You can download an example of this script below: www.itsupportguides.com/downloads/csvmerge.zip
Note: this process will only work for CSV files – not XLS (or similar) files.