La utilidad ftp de linea de comandos que traen los sistemas operativos de microsoft permite una serie de switches o modificadores. Esta es su sintaxis completa:

Modificadores FTP. Sintaxis:
FTP [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-A] [-w:windowsize] [host]

–v No mostrar las respuestas del servidor FTP
–n Suprime el diálogo de login al conectar.
–i Desactiva el prompt interactivo en transferencias multiples.
–d Activa el modo debug, mostrando todos los comandos pasados entre cliente y servidor.
–g impide el uso de caracteres comodin en los nombres de archivo
–s: [filename] especifica un archivo que contiene los comandos FTP a ejecutar. Preferible a la redirección (<).
–a Uso de cualquier interfaz local cuando vincule una conexión de datos.
–A Log en el servidor FTP como anónimo
–w:wsize Sobrescribe el tamaño de 4096 del búfer de transferencia predeterminado.
Hostname El nombre o dirección IP del servidor FTP. Debe ir en último lugar


FTP automático

Podemos hacer uso del switch -s y de un archivo bat para automatizar las tareas ftp mas repetitivas. Vamos a ver un ejemplo muy sencillo. Supongamos que necesitamos descargar frecuentemente de nuestro servidor un archivo (miarchivo.txt) y guardarlo en c: Mis Documentos. Necesitaremos dos archivos:

1.- Archivo bat. Escribimos:

ftp -s:C:batchinst.txt ftp.server.com

Al ejecutar este archivo bat, automáticamente se lanza la utilidad ftp del sistema; el switch -s indica que ejecute los comandos que encontrará en el fichero C:batchinst.txt y que conecte con el servidor ftp ftp.server.com.

Este archivo lo guardamos con la extensión bat en un directorio que esté en el path de windows.

2.- El archivo .txt será el que contenga las instrucciones o comandos FTP. En este caso lo llamamos inst.txt, aunque puede tener cualquier nombre o extensión:

nombre_usuario
contraseña
lcd ..
lcd "Mis Documentos"
cd /www/main/include
pwd
ascii
get miarchivo.txt
quit

Las dos primeras lineas son nuestro nombre de usuario en el server ftp y nuestra contraseña.

Las instrucciones lcd las usamos para especificar que la descarga de archivos será al directorio local c:mis documentos. Con cd /directorio/subdirectorio/ navegamos al directorio del server donde queremos trabajar. Mediante ascii especificamos el modo de transferencia, y con get ordenamos la descarga. Quit para cerrar la conexión.

Al ejecutar nuestro archivo bat, se abrirá una ventana DOS con este resultado:

C:batch>ftp -s:C:batchinst.txt ftp.server.com
Conectado a ftp.server.com.
220 Welcome to server.com
User:
331 Password required for nombreusuario.

230 User nombreusuario logged in.
ftp>
ftp> lcd ..
Directorio local ahora C:.
ftp> lcd  c:"mis documentos"
Directorio local ahora C:Mis documentos.
ftp> cd /www/main/include
250 CWD command successful.
ftp> pwd
257 "/www/main/include" is current directory.
ftp> ascii
200 Type set to A.
ftp> get miarchivo.txt
200 PORT command successful.
150 Opening ASCII mode data connection for miarchivo.txt (2410343 bytes).
226 Transfer complete.
ftp: 2424638 bytes received in 89.31Segundos 27.15KB/s.
ftp> quit
221 Goodbye.

Este procedimiento tiene el inconveniente de que almacenamos la contraseña y nombre de usuario en un archivo formato txt, accesible a todo el mundo (que tenga acceso a nuestro PC).

Si necesitamos seguridad adicional, podemos complicar un poco mas nuestro archivo bat, de forma que podamos prescindir del segundo fichero de texto que almacena los comandos (y entre ellos la contraseña):

@ECHO OFF
:: Comprobar si hay contraseña
IF "%1"=="" GOTO Ayuda
:: crear un archivo temporal llamado script.ftp
:: el signo > y >> es para canalizar el texto.
> script.ftp ECHO nombreusuario
>>script.ftp ECHO %1
>>script.ftp ECHO lcd ..
>>script.ftp ECHO lcd  c:"mis documentos"
>>script.ftp ECHO cd /www/main/include
>>script.ftp ECHO pwd
>>script.ftp ECHO ascii
>>script.ftp ECHO get miarchivo.txt
>>script.ftp ECHO quit
:: Usamos el archivo recien creado:
FTP -s:script.ftp ftp.server.com
:: sobreescribimos el fichero temporal y lo borramos
TYPE NUL >script.ftp
DEL script.ftp
GOTO End

:Ayuda
ECHO Uso: %0 password

:End

Y la forma de uso sería abrir una sesion DOS y escribir en ella

nombrefichero.bat contraseña.

Este script está tomado de robvanderwoude.com, que a su vez esta inspirado en la página Tom Lavedas’ Batch File Applications