We help IT Professionals succeed at work.

Automatically copy file and create folder that...

jsufee asked
Medium Priority
Last Modified: 2010-04-17
I have a question and I really need your expertise as I don't know if I should use good old DOS or maybe visual basic! Ok, here's the scenario:
I have a software that automatically output a file, let say the name of the file is Report.xyz on daily basis. Everyday the Report.xyz get overwritten so what I want to do is the following:
I would like to save the copy of the file each day before it gets created and I thought that maybe I can create a batch that would look at the file then create a folder name with the date of the file and then copy the file to that folder? i.e.

Report.xyz was create on March 20, 2006 then create a folder called March202006 and copy the report.xyz to that directory.
Report.xyz was create on March 21, 2006 then create a folder called March212006 and copy the report.xyz to that directory.

Can this be done and how? Or do you advise that I use visual basic, access or something similar?

Thank you.
Watch Question

The problem with using a batch file is that the date returned by the DOS date command needs processing to remove any characters that cannot appear in a file name (such as "/" or "\").

One easy way to solve this problem is to create an empty Visual Basic project with only one module. Add the following code to the module:


Sub Main()
  On Error Resume Next
  Dim s As String
  s = Date
  s = Replace(s, "/", "-")
  s = Replace(s, "\", "-")
  MkDir "f:\" & s
  FileCopy "f:\report.xyz", "f:\" & s & "\report.xyz"
  Kill "f:\report.xyz"
End Sub


This program assumes that the report file is stored in f:\. You need to replace "f:\" with the full path of the report file.

Now you only need to compile this program into an EXE, and then schedule a daily task for this program using the Windows task scheduler.


  Nayer Naguib

This is not exactly what you specified.

It's the batch file I've use many times before, it only keeps a copy of the old one, does not put it in a date folder but you already got the date in the filename.
I mainly love it because it's so simple and does the job (for me).

del C:\Archive\Project_old10.zip
ren C:\Archive\Project_old9.zip Project_old10.zip
ren C:\Archive\Project_old8.zip Project_old9.zip
ren C:\Archive\Project_old7.zip Project_old8.zip
ren C:\Archive\Project_old6.zip Project_old7.zip
ren C:\Archive\Project_old5.zip Project_old6.zip
ren C:\Archive\Project_old4.zip Project_old5.zip
ren C:\Archive\Project_old3.zip Project_old4.zip
ren C:\Archive\Project_old2.zip Project_old3.zip
ren C:\Archive\Project_old1.zip Project_old2.zip
ren C:\Archive\Project.zip Project_old1.zip
[now place code to create the new report or archive or whatever here]

As you can see it keeps 10 extra days of the archive or report, easily enough to extend to more. You only get tired fingers maybe. ;-)

If you really want to get a date folder I suggest either using VB or such as suggested by Nayer Naguib or you need to use some alternative DOS or DOS -extender or whatever.


This worked PERFECT. I will award you the "few" point but I had a question and I was afraid you might not come back to the post.

Instead of copying a file I would like to copy all file sin a directory and when I add *.* it dosn't work. Is Filecopy the right command or should I use something else.

>I will award you the "few" point but I had a question and I was afraid you might not come back to the post.

LOL! I'm not on Experts Exchange after the points anyway. :-)

You can use the following piece of code to copy files to some destination using wildcards:


fname = Dir("*.*", vbNormal) 'use here whatever wildcards you want
FileCopy fname, "f:\mydestination\" & fname
fname = Dir  'DO NOT use any parameters with Dir here
Loop Until fname = ""



  Nayer Naguib

Not the solution you were looking for? Getting a personalized solution is easy.

Ask the Experts


hehehe :)
Many Thanks
Access more of Experts Exchange with a free account
Thanks for using Experts Exchange.

Create a free account to continue.

Limited access with a free account allows you to:

  • View three pieces of content (articles, solutions, posts, and videos)
  • Ask the experts questions (counted toward content limit)
  • Customize your dashboard and profile

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.


Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.