Solved

VBS ftp command download latest uploaded file

Posted on 2010-09-17
3
1,079 Views
Last Modified: 2012-05-10
Dear All:

Can any one provide some ideas how can i develop a vbs scripts with download the new file from ftp server?

i have developed some scripts but i only can download all file instead of download only latest file in ftp server.

Many thanks
Function FTPDownload(sSite, sUsername, sPassword, sLocalPath, sRemotePath, sRemoteFile)

	Const OpenAsDefault = -2
	Const FailIfNotExist = 0
	Const ForReading = 1
	Const ForWriting = 2
 
	Set oFTPScriptFSO = CreateObject("Scripting.FileSystemObject")
	Set oFTPScriptShell = CreateObject("WScript.Shell")

	sRemotePath = Trim(sRemotePath)
	sLocalPath = Trim(sLocalPath)
 
	'----------Path Checks---------
	'Here we will check the remote path, if it contains
	'spaces then we need to add quotes to ensure
	'it parses correctly.
	If InStr(sRemotePath, " ") > 0 Then
		If Left(sRemotePath, 1) <> """" And Right(sRemotePath, 1) <> """" Then
			sRemotePath = """" & sRemotePath & """"
		End If
	End If
 
	'Check to ensure that a remote path was
	'passed. If it's blank then pass a "\"
	If Len(sRemotePath) = 0 Then
		'Please note that no premptive checking of the
		'remote path is done. If it does not exist for some
		'reason. Unexpected results may occur.
		sRemotePath = "\"
	End If
 
	'If the local path was blank. Pass the current
	'working direcory.
	If Len(sLocalPath) = 0 Then
		sLocalpath = oFTPScriptShell.CurrentDirectory
	End If
 
	If Not oFTPScriptFSO.FolderExists(sLocalPath) Then
		'destination not found
		FTPDownload = "Error: Local Folder Not Found."
		Exit Function
	End If
 
	sOriginalWorkingDirectory = oFTPScriptShell.CurrentDirectory
	oFTPScriptShell.CurrentDirectory = sLocalPath
	'--------END Path Checks---------
 
	'build input file for ftp command
	sFTPScript = sFTPScript & "USER " & sUsername & vbCRLF
	sFTPScript = sFTPScript & sPassword & vbCRLF
	sFTPScript = sFTPScript & "cd " & sRemotePath & vbCRLF
	sFTPScript = sFTPScript & "ascii" & vbCRLF
	sFTPScript = sFTPScript & "prompt n" & vbCRLF
	sFTPScript = sFTPScript & "mget " & sRemoteFile & vbCRLF
	sFTPScript = sFTPScript & "quit" & vbCRLF & "quit" & vbCRLF & "quit" & vbCRLF


	sFTPTemp = oFTPScriptShell.ExpandEnvironmentStrings("%TEMP%")
	sFTPTempFile = sFTPTemp & "\" & oFTPScriptFSO.GetTempName
	sFTPResults = sFTPTemp & "\" & oFTPScriptFSO.GetTempName

	'Write the input file for the ftp command
	'to a temporary file.
	Set fFTPScript = oFTPScriptFSO.CreateTextFile(sFTPTempFile, True)
	fFTPScript.WriteLine(sFTPScript)
	fFTPScript.Close
	Set fFTPScript = Nothing 

	oFTPScriptShell.Run "%comspec% /c FTP -n -s:" & sFTPTempFile & " " & sSite & " > " & sFTPResults, 0, TRUE
 	
	Wscript.Sleep 1000
 
	'Check results of transfer.
	Set fFTPResults = oFTPScriptFSO.OpenTextFile(sFTPResults, ForReading, FailIfNotExist, OpenAsDefault)
	sResults = fFTPResults.ReadAll
	fFTPResults.Close
 
	'oFTPScriptFSO.DeleteFile(sFTPTempFile)
	'oFTPScriptFSO.DeleteFile (sFTPResults)
 	
	'Wscript.Echo sResults

	If InStr(sResults, "226 Transfer complete.") > 0 Then
		FTPDownload = True
	ElseIf InStr(sResults, "File not found") > 0 Then
		FTPDownload = "Error: File Not Found"
	ElseIf InStr(sResults, "cannot log in.") > 0 Then
		FTPDownload = "Error: Login Failed."
	Else
		FTPDownload = "Error: Unknown."
	End If
 
	Set oFTPScriptFSO = Nothing
	Set oFTPScriptShell = Nothing
End Function

Open in new window

0
Comment
Question by:simonlai
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 
LVL 32

Accepted Solution

by:
Robberbaron (robr) earned 500 total points
ID: 33709387
the builtin FTP client is hard to script. It has no interactive options; there are some freeware one that do but cant find the one I used a few years ago.

Using the builtin FTP client:

i think you will have to capture a ftp DIR command to a file, parse that to determine which files to retrieve based upon displayed date/time, and then do the retrival.
this will require 2 connections but that is probably not a big problem.  You have done the second conenction

Conn1:
user ; pwd ; dir "source folder" "c:\localtempfile.txt" ; quit

Conn2:
user; pwd ; cd "source folder" ; mget file1 file2 file3 file4

(or use multiple mget to make it easier to script many files)
quit;


http://www.nsftools.com/tips/MSFTP.htm
dir  
Displays a list of a remote directory's files and subdirectories. See also mdir, which can list multiple directories.
 Syntax: dir [remote-directory] [local-file]   Parameter(s):
 remote-directory -  Specifies the directory for which you want to see a listing. If no  directory is specified, the current working directory on the remote  computer is used.
 local-file -  Specifies a local file to store the listing. If not specified, output is displayed on the screen.  
0
 
LVL 1

Author Comment

by:simonlai
ID: 33713568
robberbaron, many thanks for our ideas....

i manage to do it...


once again...thanks
0
 
LVL 1

Author Comment

by:simonlai
ID: 33713569
*our => ur
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

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

Question has a verified solution.

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

This article is the result of a quest to better understand Task Scheduler 2.0 and all the newer objects available in vbscript in this version over  the limited options we had scripting in Task Scheduler 1.0.  As I started my journey of knowledge I f…
Deploying a Microsoft Access application in a Citrix environment is not difficult but takes a few steps. However, Citrix system people are often of little help, as they typically know next to nothing about Access. The script provided here will take …
This video Micro Tutorial shows how to password-protect PDF files with free software. Many software products can do this, such as Adobe Acrobat (but not Adobe Reader), Nuance PaperPort, and Nuance Power PDF, but they are not free products. This vide…
If you're a developer or IT admin, you’re probably tasked with managing multiple websites, servers, applications, and levels of security on a daily basis. While this can be extremely time consuming, it can also be frustrating when systems aren't wor…

726 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