Scripting the SmartFTP Client
In my last blog post I reviewed the SmartFTP Client, where I briefly mentioned that the SmartFTP Client has built-in extensibility support, and I promised to include a script that I've been testing. I have made it abundantly obvious in many of my earlier blog posts that I love writing scripts or extending the functionality of existing products whenever I can, so having built-in extensibility for an FTP client definitely caught my interest.
To begin with, you can download the SDK for the SmartFTP Client from the following URL:
The SDK will give you a couple of CHM files that contain the documentation for the SmartFTP Client extensibility features and a handful of samples to get you started. After I downloaded the SDK I spent some time looking at the documentation and a few of the existing samples, and I was able to create a simple FTP client pretty easily based on what I had seen.
So without further discussion, here is the annotated sample that I have been testing:
Option Explicit ' Bypass any errors. On Error Resume Next ' Declare the object variables. Dim objSmartFTP Dim objFTPConnection ' Define some constants. ' Note: These are from the CHM file in the SDK. Const ftpProtocolNormal = 0 Const ftpErrorSuccess = 0 ' Try to retrieve an exsting object for the SmartFTP client. Set objSmartFTP = GetObject("SmartFTP.Application") ' Test if we were able to get an exsting object. If TypeName(objSmartFTP) <> "Application" Then ' Instantiate a new instance if no client is present. Set objSmartFTP = WScript.CreateObject("SmartFTP.Application") End If ' Hide the SmartFTP client. objSmartFTP.Visible = False ' Create a connection object. Set objFTPConnection = objSmartFTP.CreateObject("sfFTPLib.FTPConnectionSTA") ' Specify the connection properties. objFTPConnection.Host = "ftp.example.com" objFTPConnection.SendHOST = True objFTPConnection.Username = "foo" objFTPConnection.Password = "bar" objFTPConnection.Port = 21 objFTPConnection.Protocol = ftpProtocolNormal objFTPConnection.Passive = True objFTPConnection.MLST = True ' Connect to the FTP site and test for success. If objFTPConnection.Connect = ftpErrorSuccess Then ' Display the FTP server's welcome message. WScript.Echo objFTPConnection.ServerState.WelcomeMessage ' Download the IIS start page to a local TEMP folder. If objFTPConnection.DownloadFile("/iisstart.htm",_ "C:\temp\iisstart.htm", 0, 0) = ftpErrorSuccess Then WScript.Echo "Download successful." Else WScript.Echo "Download failed. Error = " & objFTPConnection.LastError End If Else WScript.Echo "Connection failed. Error = " & objFTPConnection.LastError End If ' Destroy the connection object. Set objFTPConnection = Nothing ' Close the SmartFTP client. objSmartFTP.Exit ' Destroy the SmartFTP object. Set objSmartFTP = Nothing
I should mention again that I am using the SmartFTP Client Ultimate Edition version 4.0.1105.0, just in case something is different in an earlier or later build. ;-]