• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 422
  • Last Modified:

Windows copy two files into one file and rename file

On my windows server I have two files, File1.csv and File2.csv.  I need to concatenate the two files, or append File2.csv to File1.csv, into a third file, File3.csv; either way, as long as the contents of File1.csv is first in the File3_CURRENTDATE.csv

I will need to have this run via a .bat file that will perform the task once a week.  I also need to know how to name the resultant file with the currentdate appended to the name before the .csv suffix.  For example

File1.csv File2.csv >> File3_20140102.csv

Thanks so much for any help you can provide.
0
newtoperlpgm
Asked:
newtoperlpgm
1 Solution
 
chaauCommented:
The easiest you can do is to use copy command, like this:
copy File1.csv + File2.csv File3_20140102.csv

Open in new window

If your files are binary, then use this:
copy /B File1.csv + File2.csv File3_20140102.csv

Open in new window

0
 
newtoperlpgmAuthor Commented:
Thank you but I need to automate the process to add the current date to the filename File3.
0
 
Jeremy WeisingerSenior Network Consultant / EngineerCommented:
I haven't tested this but I believe it should work.

If your CSV files have headers:
@ECHO OFF
set loop1=1
for /f "tokens=1-4 delims=/ " %%a in ("%date%") do (set fileDate=%%d%%c%%b)
set outfile=file3%filedate%.csv
for %%a in ("file1.csv","file2.csv") do (
  if defined loop1 (
    COPY /y "%%a" %outfile% >nul
    set "loop1="
  ) else (
    FOR /f "skip=1 delims=" %%I IN (%%a) DO >> %outfile% ECHO %%I
  )
) 

Open in new window


If they don't then:
@ECHO OFF
set loop1=1
for /f "tokens=1-4 delims=/ " %%a in ("%date%") do (set fileDate=%%d%%c%%b)
set outfile=file3%filedate%.csv
for %%a in ("file1.csv","file2.csv") do (
  if defined loop1 (
    COPY /y "%%a" %outfile% >nul
    set "loop1="
  ) else (
    type %%a >> %outfile%
  )
) 

Open in new window

0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
Raheman M. AbdulSenior Infrastructure Support Analyst & Systems DeveloperCommented:
In powershell you can run this:
start -> run -> powershell
then type the following and save the file as "combine.ps1"
------------------------
Set-ExecutionPolicy unrestricted
$combinedfile="c:\resultfile_" + (get-date).toshortdatestring() + ".csv"
add-content -value (get-content c:\csvfile1.csv) -path $combinedfile.csv
add-content -value (get-content c:\csvfile2.csv) -path $combinedfile.csv
-------------------------

Run the combine.ps1 file as scheduled task if you want to automatically run on schedule.

Input files are c:\csvfile1.csv and c:\csvfile2.csv
Output file: c:\resultfile_02/01/2014.csv

( The date is added based on the day you execute the .ps1 file)

You can refer the following to schedule the above as task in task scheduler.
http://blogs.technet.com/b/heyscriptingguy/archive/2012/08/11/weekend-scripter-use-the-windows-task-scheduler-to-run-a-windows-powershell-script.aspx
0
 
newtoperlpgmAuthor Commented:
@Jeremy Weisinger I tested your solution and it worked for me, so in order to run it I will need to add directories in order for it to know where my files that I want to be copied are correct?  Thanks.
0
 
newtoperlpgmAuthor Commented:
***update, never mind, I figured that out by changing the format in the (set fileDate=%%d%%b%%c)


Jeremy Weisinger, I also have a question about the date,
if I want to have 20140102 as todays date, how can I change it so that it appears that way.  My date appeared 20140201.
Thank you.
0
 
telczj9Commented:
change it to fileDate=%%d%%b%%c
0
 
Jeremy WeisingerSenior Network Consultant / EngineerCommented:
@newtoperlpgm "Jeremy Weisinger, I also have a question about the date,
if I want to have 20140102 as todays date, how can I change it so that it appears that way.  My date appeared 20140201."

Yes, I usually put the month first so that it's easy to sort by date just by sorting the filename. But it looks like you already figured out how to change the order.

Cheers!
JW
0
 
newtoperlpgmAuthor Commented:
I've requested that this question be closed as follows:

Accepted answer: 0 points for newtoperlpgm's comment #a39752713

for the following reason:

solution provided.
0
 
Jeremy WeisingerSenior Network Consultant / EngineerCommented:
I believe newtoperlpgm mistakenly choose their own answer as the solution when they stated my answer was correct.
0
 
newtoperlpgmAuthor Commented:
oops that is correct Jeremy I inadvertently clicked on the wrong comment to Accept as Solution.  Thanks for noticing.  I will correct.
0
 
Jeremy WeisingerSenior Network Consultant / EngineerCommented:
No problem. Thanks!
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now