Solved

VBScript to download last 7 days of files from FTP

Posted on 2011-03-05
12
349 Views
Last Modified: 2012-05-11
My FTP servers logs certain data in subfolders named by the date, like 20110306. I am trying to write a vbscript that will download the last 7 days worth of files from those subfolders. I found this ftp code, but I am not sure how to do the date part for the folders.
Wscript.Echo FTPDownload("ftp.mysite.com", "myaccount", "mypassword", "C:\temp\1\", "\", "*")

Open in new window

0
Comment
Question by:totalimpact
  • 6
  • 5
12 Comments
 
LVL 12

Expert Comment

by:prashanthd
ID: 35045790
Does it have to scan multiple subfolders?
0
 
LVL 51

Expert Comment

by:Bill Prew
ID: 35046180
How are the subfolders and files named?

~bp
0
 

Author Comment

by:totalimpact
ID: 35047029
There is a subfolder for each day - named like 20110306

There are about a hundred folders there, and I want just the last 7 days worth of folders = 7 folders, and 2-5 files in each folder.

Here is an example dir listing:
/
  20110301/many-csvfiles.csv
  20110302/many-csvfiles.csv
  20110303/many-csvfiles.csv
  20110304/many-csvfiles.csv
 
0
 
LVL 51

Expert Comment

by:Bill Prew
ID: 35060181
Here is an example of how you could look for the prior 7 days as the folder names to xfer from using the function you mentioned above.

For intDays = 0 To -7 Step -1
   datFetchDate = DateAdd("d", intDays, Now())
   strFetchDate = Year(datFetchDate) & Right("0" & Month(datFetchDate), 2) & Right("0" & Day(datFetchDate), 2)
   Wscript.Echo strFetchDate
   Wscript.Echo FTPDownload("ftp.mysite.com", "myaccount", "mypassword", "C:\temp\1\", strFetchDate, "*")
Next

Open in new window

~bp
0
 

Author Comment

by:totalimpact
ID: 35063407
Thanks Bill - that worked, but I was hoping to keep the folder structure, It just gets all the files, and they are together without folders, sometimes theres 20-30 files in a folder, so this gets messy.

 do you think I should adjust the ftp command somehow, or just have vb create the folders?
0
 

Author Comment

by:totalimpact
ID: 35063448
also, I need to get rid of the msgboxes - I got rid of the strFetchDate, but it keeps echoing -1 for each file it downloads, and I dont see this in the code, I guess its part of the function?
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 
LVL 51

Accepted Solution

by:
Bill Prew earned 500 total points
ID: 35063644
See if this gets closer to what you need.  I added logic to create the local date folder if needed, and then used that path in the FTP routine.  Removing the Wscript.Echo in front of that function will elliminate the -1 display, that was showing the return from the function call.

Set objFSO = CreateObject("Scripting.FileSystemObject")
For intDays = 0 To -7 Step -1
   datFetchDate = DateAdd("d", intDays, Now())
   strFetchDate = Year(datFetchDate) & Right("0" & Month(datFetchDate), 2) & Right("0" & Day(datFetchDate), 2)
   strDestDir = "C:\temp\" & strFetchDate & "\"
   If Not objFSO.FolderExists(strDestDir) Then objFSO.CreateFolder(strDestDir)
   FTPDownload("ftp.mysite.com", "myaccount", "mypassword", strDestDir, strFetchDate, "*")
Next

Open in new window

~bp
0
 

Author Comment

by:totalimpact
ID: 35063756
That gets all the right files and dirs.

 I figured what you said on the -1, but...if I remove Wscript.Echo, it throws an error:

Cannot use parentheses when calling a Sub
0
 
LVL 51

Expert Comment

by:Bill Prew
ID: 35063874
Ah yes, sorry, should have mentioned that.  You can work around that in one of two ways.  First, keep it as a function and just assign the return to a variable, rather than echo it.  For example:

intReturn = FTPDownload("ftp.mysite.com", "myaccount", "mypassword", strDestDir, strFetchDate, "*")

Open in new window

The other approach if you really don't need the return is to change the call to work like a subroutine rather than a function.  In this way no value if returned by the call.  For example:

FTPDownload "ftp.mysite.com", "myaccount", "mypassword", strDestDir, strFetchDate, "*"

Open in new window

I'd recommend the first though.

~bp
0
 

Author Comment

by:totalimpact
ID: 35064267
I learn more about vbs everyday ;) Thats perfect, thanks for all your help Bill.
0
 

Author Closing Comment

by:totalimpact
ID: 35064275
Bill did a great job, was very thorough and speedy.
0
 
LVL 51

Expert Comment

by:Bill Prew
ID: 35068411
Great, glad that was helpful, thanks.

~bp
0

Featured Post

Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

Join & Write a Comment

When it comes to writing scripts for a Client/Server computing environment it is essential to consider some way of enabling the authentication functionality within a script. This sort of consideration mainly comes into the picture when we are dealin…
Technology opened people to different means of presenting information, but PowerPoint remains to be above competition. Know why PPT still works today.
This video teaches viewers how to process images for a time-lapse video. Programs required: Adobe Lightroom, Adobe After Effects, Video Editing Program. In Adobe Lightroom: Import sequence image files into Adobe Lightroom: Develop settings of an I…
Viewers will learn how to create burn videos onto a DVD using Nero Suite including creating a DVD menu and chapters.

747 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

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now