Cómo Acceder A Un Servidor FTP Desde Un Fichero BAT
Posted by urpiano en viernes 23 \23\+01:00 noviembre \23\+01:00 2007
Este tip no pretende ser una novedad ni nada original, pero bueno, buscando en el baúl de los recuerdos, he visto esta respuesta que di en su día en el grupo de noticias de Windows 2000 de los grupos públicos de Microsoft y me ha apetecido publicarla; tal cual fue, la pego a continuación:
Puedes lanzar el FTP de forma automática creando una tarea programada que llame a un BAT que contenga la línea:
ftp -s:script-ftp.txt ftp.servidor.com
El fichero script-ftp.txt contiene los comandos FTP que se ejecutarán. Por ejemplo, imagina que el usuario que se conecta es «theoden» y su contraseña es «yijarohan», que quieres subir el fichero «muerte_al_orco.kill», situado en local en el directorio «c:\aliados\gondor» al directorio «pelennor» y que lo quieres subir como binario, para a continuación cerrar la conexión y terminar con ftp. En script-ftp.txt pondrías algo así:
theoden
yijarohan
binary
cd pelennor
lcd c:\aliados\gondor
put muerte_al_orco.kill
close
bye
Guille said
Muy util… gracias :)
jackson said
jajaja
hail said
lo hago pero no consigo que conecte donde a de estar el fichero que contiene las ordenes, parece que no lo encuentra
gracias
Tatto Diseño unico said
me da errores
urpiano said
Hail,
Pon la ruta completa a donde esté el script; si por ejemplo está en c:\scripts\ftp, pon:
ftp -s:c:\scripts\ftp\script-ftp.txt ftp.servidor.com
Si la ruta y/o el nombre del script contiene algún/os espacio/s, debes encerrarlo entre comillas:
ftp -s:"c:\Esta es la carpeta\script-ftp.txt" ftp.servidor.com
Juan said
Excelente!! despues de tanto buscar encontre aqui lo que buscaba
Damian said
y para bajar archivos? … gracias…
urpiano said
Damian,
Pues igual que si estuvieses usando el ftp de forma interactiva; por ejemplo, podemos añadir que el script baje el fichero armas-secretas-de-orco.doc:
theoden
yijarohan
binary
cd pelennor
lcd c:\aliados\gondor
put muerte_al_orco.kill
get armas-secretas-de-orco.doc
close
bye
daduni said
muy bueno eso era lo que necesita…. gracias
Legolas said
Urpiano, ni cuando vencimos a los uruk hai en el abismo de helm me senti tan contento como la ayuda que me brindaste para acceder a un servidor via ftp desde un fichero bat.
Tambien lo agradecen Aragororn y Gimli
David florenciañez said
y como se podria hacer uno parecido pero con linux?
urpiano said
David Florenciañez,
En el caso de linux, tienes que crear el fichero y pasarselo a FTP por redirección. Según el ejemplo anterior, crearías el script /home/script.ftp:
open http://ftp.servidor.com
theoden
yijarohan
binary
cd pelennor
lcd c:\aliados\gondor
put muerte_al_orco.kill
get armas-secretas-de-orco.doc
close
bye
Una vez creado este script, para ejecutarlo, desde bash o el shell que tengas abierto pones:
ftp < /home/script.ftp
Morgan said
Está genial, es lo que buscaba.
Una duda, ¿si necesito bajar varios archivos? Sé se van a llamar todos igual, pero con la extensión diferente xxxx.000, xxxx.001, etc…? He probado con get xxxx.* y no funciona.
Además, me interesaría cortar los ficheros y no sólo copiar.
Gracias de antemano.
urpiano said
Morgan,
en vez de usar get usa mget
Jordi said
He estado buscando durante muchos dias, y al final me encuentro este pequeño script, que a la vez que simple, es genial.
Grácias
roberto said
y como puedo eliminar los archivos que esten en el server
urpiano said
Roberto,
supongo que tu problema es que te pide confirmación al borrar los ficheros. Para evitar esto, ejecuta el comando prompt antes de intentar los borrados. Este comando establece que se pida o no confirmación, de forma predeterminada se pide. Es un comando de tipo toggle, es decir que al ejecutar invierte el valor establecido; así pues, si una vez establecida la sesión ejecutas este comando, se desactivará el pedido de confirmaciones, si lo vuelves a ejecutar se volverá a activar, si lo ejecutas otra vez se desactiva, y así sucesivamente.
marco said
me funciona todo bien… pero si quiero direccionarlo a una puerto especifico
salu2— de grand ayuda
deto said
Buenas. El método me parece genial, pero a mi solo me aparece en consola de MSDOS, repetido indefinidamente, el texto que escribo en el archivo .BAT:
ftp -s: f:\datos.txt 82.172.45.123
En el archivo datos.txt de la unidad f: escribo el usuario, la contraseña y el resto de comandos…
diego castaño said
El batch lo debes ejecutar desde una ubicacion diferente a donde tengas el archivo datos.txt para evitar ese ciclo infinito.
Aker said
No es eso, a mi también me pasaba. El problema es que al ejecutable lo llamé http://ftp.bat, con lo cual se creaba ese bucle infinito xD. Prueba con otro nombre ;)
marco said
no pude direccionarlo a un puerto especifico, pero me funciono de la siguiete forma:
en el backup.bat:
ftp -s:quotas.txt 192.168.14.8
en el quotas.txt:
dominio\usuario
password de usuario
binary
cd Respaldo_Quotas\folder (cd abre la carpeta y guardara el archivo en folder)
put BackupQuotas.extension del archivo
quit
—–
salu2
Pedro said
Tengo un problema, quiero ejecutar un .bat desde una macro de excel (VBA) en la cual me levante un archivo especifico desde el FTP. Si este script lo ejecuto desde el explorador, me levanta sin problemas el archivo, pero si lo ejecuto en la macro, no lo hace. Alguien me puede dar un mano. Gracias. Les paso las lineas de codigo de la macro.
App = Shell(«»»c:\FTP\COP\» & arch & » «»», vbMaximizedFocus)
— el archivo arch = FTP_Genera_955.bat
— el archivo FTP_Genera_955.bat contiene «ftp -s:c:\FTP\COP\FTP_Genera_955.txt 10.94.164.7»
— el archivo FTP_Genera_955.txt contiene
ftpde955
xxxxxx
bin
mget 0955pedidos_por_puntos_p94jefse_*.txt
quit
urpiano said
Pedro,
¿Qué valor te devuelve App después de la ejecución?
Pedro said
El valor es igual a 748,
urpiano said
Pedro,
¿Has probado a poner esto otro a ver si funciona?
App = Shell(«cmd /c «»c:\FTP\COP\» & arch & «»»», vbMaximizedFocus)
Pedro said
No funciona, te cuento que es lo que quiero hacer:
En excel tengo una celda que contiene un valor segun el proceso que corre, segun este valor voy a ejecutar el .bat que necesito, pero no logro hacerlo desde excel. Gracias
Nahuel said
Muchas gracias por la info, la verdad me vino como anillo al dedo.
Saludos.
lucas said
Hola, el script anda de 10 pero siempre corre desde el c: nuestro.
ftp -s:(que corra desde un servidor web) http://ftp.servidor.com
se podrá hacer?
gracias
urpiano said
Lucas,
No acabo de entender la pregunta. ¿Quieres lanzar algo así como ftp -s:http://ftp.servidor.com/script.txt o más bien que el script que se pasa a ftp conecte con el servidor http://ftp.servidor.com? Si es alguna de estas dos, la respuesta es que no, no se puede. En el primer caso el parámetro -s de ftp debe pasar un fichero de texto desde una ruta de equipo; en el segundo caso no se puede porque no estás conectando a ftp, si no a http.
martin said
Perfecto, simple, facil y funciona!!!!
javier said
oye si funciona muy bien pero como le hago
para subir n cantidad de archivos sin estar
escribiendo el nombre del archivo que deseo
subir
Jaime said
Hola,
Muchas gracias por el Script! funciona de maravilla.
Lo estoy utilizando para hacer un backup de archivos a un disco FTP, y tengo un par de dudas
¿Si encuentra en el servidor un archivo del mismo nombre, PUT sobreescribe el archivo? ¿pregunta?
¿Cómo puedo hacer para que sólo sobreescriba aquellos archivos en los que el origen es más reciente que el destino?
Un saludo y muchas gracias
Ijalba said
Para coger un grupo de ficheros por FTP se usa mget (para subirlos mput)
Con lo que, para coger todos los ficheros .log haríamos un:
mget *.log
Para que no nos pregunte por cada archivo si queremos bajarlo o no, podemos invocar a ftp con la bandera de ignorar mensajes interactivos:
ftp -i hostname.
Un Saludo.
matias said
hola. Estoy haciendo uns script que conecta a un ftp. Mi pregunta es….si no se puede conectar al ftp por X motivo, vuelve a intentar conectarse?hay alguna forma de ponerle que si no puede conectarse intente hasta que se conecte y siga con el resto del script? Desde ya muchas gracias muy util su informacion
urpiano said
Matias,
Eso no es posible, pues los bat son procesos que se ejecutan de forma síncrona, esto es, hasta que un comando no termina, no empieza el otro. Sí podrías hacer que reintentase una y otra vez, poniendo el bloque de conexión a FTP en una etiqueta y comprobando si ha habido error, en cuyo caso se volviese a ejecutar el bloque por medio de una llamada a GOTO a esa etiqueta, pero no podrías hacer que se ejecutasen otras cosas mientras lo está intentando.
matias said
Muchas gracias Urpiano por tu información. Si eso es lo que me refería yo, que intentase una y otra vez hasta que se conecte y cuando se pueda conectar ahi que siga con el resto del script. Una molestia mas…. podrías ponerme un ejemplo de como sería el script con la etiqueta que mencionas y con la llamada GOTO? y ademas como hacer para que se ejecute el script constantemente en un loop de 5 segundos? es decir….. luego de que el script termine, espere 5 segundos y se vuelva a ejecutar y asi sucesivamente. Espero tu respuesta y nuevamente Muchas Gracias por tu información. Me está siendo de mucha ayuda
urpiano said
Matias,
Por desgracia, no va a funcionar, pues FTP no da error cuando no conecta a un sitio FTP, simplemente se abre sin haber conectado, intenta los comandos del fichero, que dan error, y termina con bye, y para CMD no se ha producido un error: la forma de hacer lo que te decía no funcionará. No obstante, te hago una muestra por si te vale para otro caso:
:ftp
ftp -s:script.txt http://ftp.sitio.com
if errorlevel=1 goto ftp
Jose Jose said
estimados colegas,
este codigo ya lo tenia programado y funciona de maravilla, pero necesito su apoyo, necesito saber como poder, una vez conectado al FTP, obtener los siguientes datos de un archivos del FTP:
– fecha y hora de creacion del archivo
hay algun comento FTP que permita obtener estos datos? o de lo contrario como insertar comandos VBScript en el txt con comandos FTP se peude hacer esto? y si alguno sabe porfavor indiquenme como hacerlo!!
muchas gracias desde ya
urpiano said
Jose Jose,
Mira si en este sitio encuentras algo que te puedaservir:
http://www.example-code.com/vbscript/ftp.asp
Frank Aldape said
miren lo quiero hacer un bat que de de las siguientes funciones:
suba informacion de archivos .pdf y .xml dependiendo del mes de su creacion a un servidor ftp con usuario y password. Sin tener que poner que se guarden.
Si me pueden ayudar
mamalon74 said
hola hermano hice el siguiente bat se conecta al ftp pero no me deja ningun archivo
user
pass
cd xml (esta carpeta no me la ecuentra) o al menos eso me dice
lcd D:\INRVS
put viajesconf*.csv (tengo muchos archivos *.csv pero quiero pasar todos los que empiecen con VIAJESCONF
quit
la bronca es que me meto desde otra maquina por medio del filezilla al ftp no y no deja ningun archivo
mejme said
Muchas Gracias por el aporte fue de mucha utilidad.
Fede said
Buenas a todos, gracias de antemano.
Como hago si necesito que mantenga la estructura de directorios??
Ej: Si voy a descargar la carpeta llamada «1», que adentro tiene mas carpetas, necesito que mantenga esa estructura…
Fernando said
Yo para scripts, ya sean CMD, PHP o AutoIt, utilizo NcFTP (http://www.ncftp.com/) que tiene maravillosas utilidades como ncftpput, ncftpls, ncftpget…
Me suelo bajar el paquete para Win, lo descomprimo (no lo instalo) y me pillo los tres o cuatro ejecutables que no necesitan ni dll ni nada y listo.
Saludos
Cryptklok said
Tengo una duda con mi codigo:
@echo off
Rar a -r -ed %UserProfile%\%USERNAME%_%COMPUTERNAME% %UserProfile%\Roller
set servidor=<>
set user=<>
set pass=***********
set arch=%UserProfile%\%USERNAME%_%COMPUTERNAME%.rar
echo %user%>>000
echo %pass%>>000
echo bin>>000
echo put %arch%>>000
echo close>>000
echo bye>>000
ftp -s:000 %servidor%
del 000
del %arch%
exit
Lo que pasa es que si sube el archivo rar al ftp, pero cuando lo descargo y lo descomprimo me sale un error de CRC y me dice Final inesperado del archivo. Lo curioso es que cuando elimino la linea «del %arch%» y abro el archivo creado si lo descomprime normal y también si lo subo mediante FileZilla, por lo que supongo que algo anda mal con el código para subir al ftp. Espero que alguien me pueda ayudar :/
urpiano said
Me da la impresión de que el problema es que el ftp es procesado de forma asíncrona, de manera que cuando se borra el rar todavía está subiendose. Yo probaría a no borrar el rar después de subirlo, si no que se le deja ahí y lo primero que hace el bat es borrar el rar de la ejecución anterior.
Emilio said
gracias.
Gustavo C. said
Que tal tengo un problema, espero me puedan ayudar. Lo que necesito hacer es que mi .bat descargue desde un FTP el útlimo archivo de acuerdo a la fecha de creación, por ejemplo tengo los siguientes archivos:
DCOLDATA040800.txt (Archivo con fecha del 8 de Abril)
DCOLDATA052300.txt (Archivo con fecha del 23 de Mayo)
DCOLDATA061200.txt (Archivo con fehca del 12 de Junio)
DCOLDATA061300.txt (Archivo con fecha del 13 de Junio)
DCOLDATA061400.txt (Archivo con fecha del 14 de Junio)
Por ejemplo el día de hoy sólo necesito descargar el archivo DCOLDATA061400.txt, pero el día de mañana se creará uno nuevo con la fecha del 15 de junio ejmeplo:DCOLDATA061500.txt el cual sería el único que descargaría al día siguiente y así sucesivamente.
Como puedo hacer estas instrucciones???
Agradezco su atención
harry said
Excelente me funciono a la primera…gracias
jose luis said
bunas necesito ayuda no me funciona el script…
lo que necesito hacer es crear un .bat que me copie una base de datos y luego me lo comprima en un .RAR para mandarlo al FTO…
hasta el momento me funciona perfecto la parte de copiar y comprimir pero cuando se ejecuta la linea del ftp solo me aparece en la consola un listado como de ayuda y de las funciones del http://ftp…no se conecta al servidor ni nada…
de antemano muchas gracias espero me puedan ayudar
Demetrio garcia said
Mi script estaba corriendo muy bien, solo que ha dos semanas dejo de funcionar haciendo prbas me dicuenta que no esta tomando en cuenta la linea del password, y me devuelve el ensaje de «331 password required for User», alguien tiene una idea de que puede estar pasando
cristian said
Hola, hize todo igual que tu y al abrir el comando
ftp -s: host
me sale un bucle
cristian said
es decir pongo ftp -s:archivo.txt (el host)
y me sale un bucle de cmd en cada uno pone lo mismo
junior said
este es el archivo bat
@echo off
ftp -s:ftp.txt 127.0.0.1
este el archivo http://ftp.txt
junior
junior
get «tu poeta.mp3»
close
bye
lo que pasa que e simulado mi computadora como un servidor ftp pero al ejecutar el archivo .bat no logro connectarme ambos archivos estan en el msimodirectorio
CarlosKaya said
Mi .bat de ftp funciona bien, el problema esta en que necesito trabajarlo pasando un parámetro, sino tendría que tener un archivo por cada directorio, la cuestión es que cuando paso el parámetro me genera error y no hace nada.
@echo off
@ftp -i -s:»%~f0″&GOTO:EOF
open 200.74.223.154
acctupper
IpH3kQ#=-Ouk~
!:— Comandos FTP para pasar de Windows (T33) a TupperNet —
!:— c:\tmp es el Directorio de Windows (T33) donde estan los archivos de Credito/Cobros —
cd /opt/tmp/dist/%1%/envio_planta
lcd \\ven1erp03\ERPFTP\DDD\Pruebas
binary
mget «*.unl.*»
disconnect
bye
urpiano said
CarlosKaya,
Me parece muy ingenioso eso que haces, pero me temo que no funcione, pues cuando se está leyendo el BAT como script de FTP no creo que %1% sea cambiado al valor que tendría en el bat (por cierto, que sobraría el tanto por ciento de la derecha, pues los parámetros sólo se referencian con el tanto por ciento de la izquierda; son las variables que establezcas con SET (o las de entorno) las que se referencian encerradas entre tantos por ciento.
Se me ocurre que lo que puedes hacer es generar el fichero desde el bat, invocarlo y destruirlo, algo así:
unmsm2002 said
funciona bien pero si el archivo a subir(put) es variable, se genera cada media hora, como hago para enviarle el nombre al put ya que depende de la hora. un ejemplo seria:
0101ABC00000017420130228080000.dat
0101ABC00000017720130303075959.dat
y asi sucesivamente, como puedo colocar un «nombre variable» al put.
Crudelitas said
Hola alguien sabra como hacer esta conexion de FTP a un servidor por medio de un bat pero con SFTP ??
Pablo said
Tengo este codigo:
macropro
macropro
lcd ..
lcd «pdf_mb»
lcd «2014»
lcd «01»
cd /home/macropro/EMP01/cfdxml/2014/01
pwd
ascii
prompt
mget IFOR******.xml
bye
quit
me baja todos los archivos con extension pdf, pero yo necesito que me baje los mas recientes no que me vuelva a sobreescrubir todos los que ya tengo. ¿Como le hago? Gracias.
Pablo said
Perdon me baja archivos xml jejeje
Alejandro said
necesito bajar un archivo .rar desde un ftp por comando cmd o creando un .bat y no tengo contraseña ni usuario. como puedo conectarme al servidor ftp sin tener que poner usuario y contraseña ya que la carpeta a la que necesito conectarme es publica. como puedo crear ese .bat para ejecutarlo como tarea programada
Ramon sanchez said
Me pueden ayudar como crear el script par descargar archivo de un ftp que varian la fecha por ejemplo:
20150205_2010_SGCCLI
Blanca said
quiero saber como definir en el script del .bat la hora de inicio de transferencia de un archivo y la hora fin de dicha transferencia y que se vea refrejada en una bitácora .log
anonimo said
Gracias Me sirvio para un proyecto
Cesar Pozo said
Muchas gracias, hace tiempo tenia un ftp por lotes pero lo perdí con el antiguo equipo, no me acordaba como hacerlo, con esta ayuda funciono perfecto:
creé un archivo que se llama Lanza_ftp.cmd en una carpata : C:\varios\ftp, y otro que se llama get.txt
– http://ftp.cmd contiene el siguiente comando:
ftp -s:c:\varios\ftp\get.txt servidorftp
– get.txt contiene lo siguiente:
usuario_servidor
password_servidor
ascii
get ‘archivo1’ archivo1.txt
get ‘archivo2’ archivo2.txt
get ‘archivo3’ archivo3.txt
close
bye
posteriormente solo falta hacer doble clic a lanza_ftp.cmd o por linea de comandos en DOS ejecutarlo y se ejecuta la conexion al servior, la bajada de los archivos y el cierre de la conexion.
Funciona perfecto……
De verdad agradezco la ayuda, y ojalá esto que dejo tambien les sirva.
Saludos a todos y muchas gracias!!!!!
opinion essay said
opinion essay
Cómo Acceder A Un Servidor FTP Desde Un Fichero BAT « El Blog de Gualtrysoft