copy file and delete file by vbscript or bat file

Hi ,
I want a script to do
copy file a.bkf from folder a to folder b and rename file a to a_yyyymmdd.bkf
detect the files in folder b and delete the file that old than 30days.

Please write it as a vbscript or dos bat file . so it is easy to modify.
GordonLiqAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Rob HutchinsonDesktop SupportCommented:
This is part of a vbs subroutine that I wrote 10 years ago and I can't even remember where I got the info from, etc.

Don't ask me to explain it as I'm not a scripting expert, but thought I'd post it anyway to give you some ideas so you can write your own script.

It does not do the detecting part of it.

I included the exe, but renamed it as RF.txt.

if there is a file in the same folder called "access_file" then it renames it to
"1023-PM-07-13-09-access_file" or whatever the current date and time are.

Attribute VB_Name = "FileScan"
Public Sub Main()
 
Dim OldName, Today, filenamedatentime
Today = Now ' Assign current system date and time.
Today = Format(Today, "hmm-AM/PM-mm-dd-yy")
 
'Rename the access_file name to today's date
OldName = "access_file"
filenamedatentime = CStr(Today + "-" + OldName)
Name OldName As filenamedatentime ' Move and rename file.
 
errorfile
 
End Sub
 
Public Sub errorfile()
 
Dim OldName, Today, filenamedatentime
Today = Now ' Assign current system date and time.
Today = Format(Today, "hmm-AM/PM-mm-dd-yy")
 
On Error Resume Next
'Rename the error_file name to today's date
OldName = "error_file"
filenamedatentime = CStr(Today + "-" + OldName)
Name OldName As filenamedatentime ' Move and rename file.
 
End Sub

Open in new window

RF.txt
0
Alan_WhiteCommented:
I've got a couple of scripts I can mash together that will do what you need.  
Can you tell me, is it always the same source file?  ie always a.bkf or do you need it to cope with multiple source files?
0
Alan_WhiteCommented:
OK, try this for size.
Hopefully it's clear what is happening but...
The constants up the top are the only bits you should need to change.
An exception to this is the format of the date, if you have US style dates then you need to use the US format line instead of the UK line.
Let me know how you get on.
Alan

Option Explicit
 
Const sSourceFolder = "C:\A"
Const sDestinationFolder = "C:\B"
Const cFileNameWithoutExtension = "a"
Const cFileNameExtensionOnly = ".bkf"
Const cKeepDays = 30
 
Dim oShell, oFSO, i
Dim oFolderInfo, oFileCol, oFile
Dim sLogFile, sFileName
sFileName = cFileNameWithoutExtension&cFileNameExtensionOnly
 
Set oShell = CreateObject("WScript.Shell")
Set oFSO = CreateObject("Scripting.FileSystemObject")
 
Dim sNewFileName
sNewFileName = cFileNameWithoutExtension&"_"&Year(Now)&Right("0"&Month(Now),2)&Right("0"&Day(Now),2)&cFileNameExtensionOnly
oFSO.CopyFile sSourceFolder&"\"&sFileName, sDestinationFolder&"\"&sNewFileName
clearLogs
 
Sub clearLogs
 
	Dim iStartOfDate, sCurrentFilename, fileYear, fileMonth, fileDay, fileDate, diff
	Set oFolderInfo = oFSO.GetFolder(sDestinationFolder)
	Set oFileCol = oFolderInfo.Files
	For Each oFile In oFileCol 'Loop through each file within the current sub folder
		sCurrentFilename = LCase(oFile.name)
		If InStr(sCurrentFilename, cFileNameWithoutExtension&"_") = 1 AND InStr(sCurrentFilename, cFileNameExtensionOnly) >0 Then  'if not a log file, skip
		
			iStartOfDate = InStr(sCurrentFilename, "_")+1
			fileYear =  Mid(sCurrentFilename,iStartOfDate,4)
			fileMonth = Mid(sCurrentFilename,iStartOfDate+4,2)
			fileDay =   Mid(sCurrentFilename,iStartOfDate+6,2)
			
			fileDate = CDate(fileDay&"/"&fileMonth&"/"&fileYear)  'UK format
			'fileDate = CDate(fileMonth&"/"&fileDay&"/"&fileYear)  'US format	
			
			diff = DateDiff("d",fileDate,Now)
			
			If diff => cKeepDays Then
				oFSO.DeleteFile sDestinationFolder&"\"&sCurrentFilename
			End If	
		End If 
	Next
 
End Sub

Open in new window

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
GordonLiqAuthor Commented:
That works really well , thanks for help!!!!
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
VB Script

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.