Blog

Managed File Transfer and Network Solutions

Using Windows FTP Scripts To Automate File Transfers

Posted by John Carl Villanueva on Fri, Aug 19, 2016 @ 09:42 AM

Overview

Windows FTP scripts enable you to put together a chain of commands in a file that you can call into play when needed. Scripts can come in handy when you want to automate file transfer processes. In this introductory post, we explain what FTP scripts are, why you'll want to use them, and how to create simple Windows-based scripts to upload or download files from a FTP server.


In a previous article, we taught you how to execute FTP commands in the terminal. The examples we included in that tutorial were all done in interactive mode. Meaning, they all required you to enter commands into the command line each time you wanted to do something during an FTP session, e.g. login to a server, display a directory listing, upload files, download files, change a directory, and so on. 

Interactive mode is sufficient for ad hoc purposes. But if you need to transfer files on a regular basis, e.g. as part of a B2B transaction or data exchange, then interactive mode is no longer practical. You'll be much more efficient if you can automate some parts of the process, and the way to that would be to write FTP scripts.  

Note: FTP is no longer recommended for transferring sensitive files. Learn why in the article Countering Packet Sniffers Using Encrypted FTP

Simple FTP script for the Windows command line

An FTP script consists of the same commands that you normally issue in an interactive session, except that the commands are entered into a file. Let's take a look at a simple script that:

  1. Logs in to a FTP server at 192.168.100.101;
  2. Enters "user1" as the username and "demo" as that username's corresponding password;
  3. Changes to the local directory "c:\ftpuploads";
  4. Uploads the file "samplefile.txt" to the server; and
  5. Exits

Here's the script for that:

open 192.168.100.101

user1

demo

lcd c:\ftpuploads

put samplefile.txt

quit

Notice how we've simply entered the same commands you'd normally use in interactive mode. You can use your favorite text editor to create the script and save it in a text file, e.g. ftpscript.txt. To run the script, you just execute the FTP command with the -s option. For example,

ftp -s:ftpscript.txt.

 Here's how it looked like when I ran that command on my Windows command prompt:

 

ftp_script_in_windows_command_prompt.png

 

So how different is this from interactive mode? Well, the BIG difference is that, you no longer have to input the same values and commands over and over every time you need to upload the same file to the same FTP server (there are certainly sophisticated scripts that can do more than that).

Most B2B file transfers are quite repetitive. Practically the same file transfers are carried out periodically. Why assign someone (who can probably do more productive tasks) to do that repetitive task when you can just call a script? 

In Windows, scripts usually work with batch files. You may call that command we showed earlier from a batch file like this:

 

 

ftp_script_batch_file.png

 

If the batch file (e.g. fileupload.bat) is located in a directory whose path is included in your PATH environment variable, then you'll be able to run that batch file as a command prompt executable file from any directory.

Here's the contents of a slightly more complicated Windows batch file (which we name filedownload.bat) that creates an FTP script on the fly and then executes it: 

@echo off

echo open 192.168.100.101> ftpgetscript.txt

echo user1>> ftpgetscript.txt

echo demo>> ftpgetscript.txt

echo get %1>> ftpgetscript.txt

echo quit>> ftpgetscript.txt

ftp -s:ftpgetscript.txt

Notice that this batch file accepts an argument (%1) and passes the value to the script. Here's how it looked like when I executed the batch file to "download" the file named samplefile.txt. samplefile.txt is the argument we passed to the batch file, which in turn passed it on to the FTP script. 

 

windows_batch_file_with_ftp_script.png

 

If you want to run this batch file (and consequently, the FTP script) on a pre-defined schedule, you'll have to add the batch file in your Windows Task Scheduler. That's a separate configuration altogether and is beyond the scope of this blog post. 

 

windows_task_scheduler.png

 

In the meantime, you might want to read...

Some articles related to this

FTP Automation Without Using Scripts

Benefits of a Scheduled File Transfer and How To Set One Up

Auto Upload Files To A Remote Server Upon Arrival At A Local Directory

Forwarding Files From FTP To SFTP

How To Install A SFTP Server on Windows

12 File Transfer Protocols And The Businesses They're Best Suited For

10 Things You Can Do With An MFT Server - An Infographic 

10 Ways to Make a Server to Server File Transfer Fit Enterprise Use

 

Topics: Business Process Automation, FTP