Codebox Software
Windows FTP Script
Published:
This batch file can be used to automate various FTP operations. The version shown below will retrieve a single file from the server, however it is easy to modify the code to upload files instead, or to copy batches of files.
@echo off SETLOCAL REM ################################## REM Change these parameters set FTP_HOST=192.168.1.2 set FTP_USER=rob set FTP_REMOTE_DIR=/ set FTP_REMOTE_FILE=test.txt set FTP_LOCAL_DIR=c:\rob\tmp set FTP_TRANSFER_MODE=ascii REM ################################## set /P FTP_PASSWD=FTP Password for %FTP_USER% @ %FTP_HOST%: set SCRIPT_FILE=%TEMP%\ftp.txt ( echo %FTP_USER% echo %FTP_PASSWD% echo %FTP_TRANSFER_MODE% echo lcd %FTP_LOCAL_DIR% echo cd %FTP_REMOTE_DIR% echo get %FTP_REMOTE_FILE% echo bye ) > %SCRIPT_FILE% ftp -s:%SCRIPT_FILE% %FTP_HOST% del %SCRIPT_FILE% ENDLOCAL
Notes
The script works by creating a temporary FTP script file, and running it using the ftp -s
option of the Windows FTP client. The script collects the password for the FTP server interactively
from the user, once it has been launched.
To use the script, first set the values of the 6 FTP_... variables according to your needs - the names
are fairly self-explanatory, if in doubt then test the values using an interactive ftp prompt first.
When the script is invoked it will prompt the user to enter an FTP password, this avoids the need to
store the password within the script itself - if you aren't concerned about this, and prefer to allow
the script to run without any user interaction, then replace the line beginning
set /P FTP_PASSWD...
with set FTP_PASSWD=your.password.here
instead. If you wish
to copy binary (ie non-text) files then you should set the FTP_TRANSFER_MODE
variable
to 'binary' instead of 'ascii'.
A few notes about security - the password that is entered may be recorded in your command-line history
if the DOSKEY utility is active, to clear this history use the command DOSKEY /REINSTALL
at the end of the script. The password, and other FTP details, are recorded in temporary variables which
are removed from scope when the script terminates. The script file containing the FTP commands that
were sent to the server (including the password) is also deleted when the script finishes. Note that
if the execution of the batch file is interrupted, then there is a good chance that the FTP script
file will not have been deleted - you should do this manually.