He creado un archivo por lotes llamado FTP_automation.bat
que contiene el siguiente código.
SET MyPath=E\PGP\test_pg
ftp
open 142.245.30.165 21
TESTA9MS
test11
binary
put %MyPath%
quit
Pause
Cuando estoy ejecutando FTP_automation.bat
, no carga el archivo al que le estoy pasando el parámetro.
El script se detiene después ftp
de lo cual se menciona en el archivo por lotes y no se conecta a la dirección IP ni al número de puerto que pasé en el archivo por lotes.
Si escribía estos comandos manualmente, funcionaba perfectamente. ¿Qué corrección se supone que debo hacer a este código?
Respuesta1
Tienes que poner los ftp
comandos en un archivo separado. No puede colocar líneas que de otro modo escribe en la terminal en un .bat
archivo y esperar que se comporte de manera idéntica. El .bat
archivo solo puede incluir comandos de Windows. Cuando ejecuta el ftp
comando desde el archivo por lotes, espera sus comandos. No conoce el .bat
archivo, por lo que no puede leer los comandos desde allí.
Así que coloque sus comandos en un archivo de texto separado (por ejemplo ftp.txt
).
open 142.245.30.165 21
TESTA9MS
test11
binary
put E\PGP\test_pg
quit
Y ejecútelo desde el .bat
archivo como:
ftp -s:ftp.txt
pause
Si realmente necesita utilizar un nombre de archivo dinámico (de una variable de entorno), debe crear el archivo de texto sobre la marcha. El ftp
no admite variables.
Si utiliza un mejor cliente FTP, es posible que pueda tener los comandos en el archivo por lotes y utilizar las variables de entorno.
Por ejemplo conWinSCP:
set MyPath=E\PGP\test_pg
winscp.com /command ^
"open ftp://TESTA9MS:[email protected]" ^
"put ""%MyPath%""" ^
"exit"
pause
Para obtener una introducción a las secuencias de comandos con WinSCP, consulte:
https://winscp.net/eng/docs/guide_automation
También hay una guía paraConversión de secuencia de comandos FTP de Windows a secuencia de comandos WinSCP. Incluso puedes tener GUI WinSCPgenerar el archivo por lotespara ti.
(Soy el autor de WinSCP)