Eu criei um arquivo em lote chamado FTP_automation.bat
que 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 ftp
ser 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 ftp
comandos em um arquivo separado. Você não pode colocar linhas que você digita no terminal para .bat
arquivar e esperar que ele se comporte de forma idêntica. O .bat
arquivo pode incluir apenas comandos do Windows. Quando você executa o ftp
comando do arquivo em lote, ele aguarda seus comandos. Ele não conhece o .bat
arquivo, 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 .bat
arquivo 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 ftp
nã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)