Solved

copy file and delete file by vbscript or bat file

Posted on 2009-07-13
4
459 Views
Last Modified: 2012-05-07
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.
0
Comment
Question by:GordonLiq
  • 2
4 Comments
 
LVL 19

Expert Comment

by:Rob Hutchinson
ID: 24846496
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
 
LVL 10

Expert Comment

by:Alan_White
ID: 24847421
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
 
LVL 10

Accepted Solution

by:
Alan_White earned 500 total points
ID: 24847626
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
 

Author Closing Comment

by:GordonLiq
ID: 31603143
That works really well , thanks for help!!!!
0

Featured Post

Courses: Start Training Online With Pros, Today

Brush up on the basics or master the advanced techniques required to earn essential industry certifications, with Courses. Enroll in a course and start learning today. Training topics range from Android App Dev to the Xen Virtualization Platform.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I met Paul Devereux (@pdevereux) today when I responded to his tweet asking “Anybody know how to automate adding files from disk to a folder in #outlook  ?”.  I replied back and told Paul that using automation, in this case scripting, to add files t…
VALIDATING DATES One method of validating dates is to jam the date into the DATE command and see if it accepts it by examining the system's errorlevel value. A non-zero result indicates failure. A typical example might look something like the fol…
Windows 10 is mostly good. However the one thing that annoys me is how many clicks you have to do to dial a VPN connection. You have to go to settings from the start menu, (2 clicks), Network and Internet (1 click), Click VPN (another click) then fi…
Although Jacob Bernoulli (1654-1705) has been credited as the creator of "Binomial Distribution Table", Gottfried Leibniz (1646-1716) did his dissertation on the subject in 1666; Leibniz you may recall is the co-inventor of "Calculus" and beat Isaac…

785 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question