Como faço upload de um arquivo para um servidor FTP usando um script em lote?

Como faço upload de um arquivo para um servidor FTP usando um script em lote?

Eu criei um arquivo em lote chamado FTP_automation.batque contém o código abaixo.

SET MyPath=E\PGP\test_pg
ftp
open 142.245.30.165 21
TESTA9MS
test11
binary
put %MyPath%
quit
Pause

Quando estou executando FTP_automation.bat, não está carregando o arquivo para o qual estou passando o parâmetro.

O script para após ftpser mencionado no arquivo em lote e não está se conectando ao endereço IP e ao número da porta que passei no arquivo em lote.

Se eu digitasse manualmente esses comandos, estava funcionando perfeitamente. Que correção devo fazer neste código?

Responder1

Você deve colocar os ftpcomandos em um arquivo separado. Você não pode colocar linhas que você digita no terminal para .batarquivar e esperar que ele se comporte de forma idêntica. O .batarquivo pode incluir apenas comandos do Windows. Quando você executa o ftpcomando do arquivo em lote, ele aguarda seus comandos. Ele não conhece o .batarquivo, portanto não pode ler os comandos dele.

Portanto, coloque seus comandos em um arquivo de texto separado (por exemplo ftp.txt, ).

open 142.245.30.165 21
TESTA9MS
test11
binary
put E\PGP\test_pg
quit

E execute-o a partir do .batarquivo como:

ftp -s:ftp.txt
pause

Se você realmente precisar usar um nome de arquivo dinâmico (de uma variável de ambiente), será necessário criar o arquivo de texto dinamicamente. O ftpnão suporta variáveis.


Se você usar um cliente FTP melhor, poderá ter os comandos no arquivo em lote e usar as variáveis ​​de ambiente.

Por exemplo comWinSCP:

set MyPath=E\PGP\test_pg

winscp.com /command ^
    "open ftp://TESTA9MS:[email protected]" ^
    "put ""%MyPath%""" ^
    "exit"

pause

Para uma introdução à criação de scripts com WinSCP, consulte:
https://winscp.net/eng/docs/guide_automation

Há também um guia paraConvertendo script FTP do Windows em script WinSCP. Você pode até ter a GUI do WinSCPgerar o arquivo em lotepara você.

(Sou o autor do WinSCP)

informação relacionada