Verifique se o upload do FTP foi bem-sucedido ou não usando lote?

0

Estou executando abaixo do código em ftpUpload.bat . Se o arquivo não for enviado para o servidor FTP, ele deverá imprimir "O upload do FTP falhou", mas estou recebendo "O upload do FTP foi bem-sucedido" para ambos os casos. Que alteração preciso fazer no arquivo em lote para obter a saída correta

@ECHO OFF    
SET ReturnCode="0"
SET EncryptFilePath=%1
SET ReturnCode=0
::Echo Step4 :  Upload Encrypted file in FTP server is started
    @Echo open 104.213.13.281 21>>C:\Case360_EAR_Tool\%FileName%.txt
    @Echo Dev>>C:\Case360_EAR_Tool\%FileName%.txt
    @Echo MyDev>>C:\Case360_EAR_Tool\%FileName%.txt
    @echo binary>>C:\Case360_EAR_Tool\%FileName%.txt
    @echo cd inbound\development\extracts\yxd0>>C:\Case360_EAR_Tool\%FileName%.txt
    @echo put %EncryptFilePath%>>C:\Case360_EAR_Tool\%FileName%.txt
    @echo quit>>C:\Case360_EAR_Tool\%FileName%.txt
    ftp -i -s:"C:\Case360_EAR_Tool\%FileName%.txt" && (
    echo FTP upload is successful
    DEL C:\Case360_EAR_Tool\%FileName%.txt
    ) || (
    echo FTP upload is failed
    echo ReturnCode="1"
    DEL C:\Case360_EAR_Tool\%FileName%.txt
exit
    )
echo %ReturnCode%
exit
    
por abhayk 22.07.2015 / 11:09

1 resposta

2

Eu não acho que exista uma maneira confiável de fazer isso com o Windows ftp.exe .

Não reportará o resultado via código de saída. Ele sempre retorna 0, mesmo no erro.

Tudo o que você pode fazer é analisar a saída ftp.exe . Mas essa é uma abordagem bastante suja. Note que o ftp.exe não separa os erros em uma saída de erro, gera tudo para uma saída padrão.

É melhor você usar um cliente FTP de terceiros.

Por exemplo, com script WinSCP , você pode usar:

@echo off

winscp.com /log=ftp.log /command ^
    "open ftp://user:[email protected]/" ^
    "cd inbound/development/extracts/yxd0" ^ 
    "put %EncryptFilePath%" ^
    "exit" && (
    echo FTP upload is successful
) || (
    echo FTP upload is failed
    exit
)

Em que ftp://user:[email protected]/ seria ftp://Dev:[email protected]/

Veja também Convertendo o script FTP do Windows para o script FTP do WinSCP .

(eu sou o autor do WinSCP)

    
por 22.07.2015 / 11:43