Execute um arquivo em lote FTP de dentro de um arquivo em lote

Execute um arquivo em lote FTP de dentro de um arquivo em lote

Tenho uma tarefa agendada que executa os comandos do meu arquivo ftp.txt todos os dias. O arquivo pode ser visto abaixo, ele se conecta via ftp ao meu site e coloca 3 arquivos XML no meu servidor web.

comando:

ftp -s:filename

Arquivo executado por comando

open ftp.mysite.co.uk
username
password
put C:\file.xml location/file.xml
put C:\file1.xml location/file1.xml
put C:\file2.xml location/file2.xml
bye

Agora tenho que executar as mesmas transferências, mas para sites com detalhes de FTP diferentes. Não quero agendar uma nova tarefa do Windows para cada transferência, então gostaria de saber se existe uma maneira de executar outros arquivos ftp.txt a partir do arquivo ftp.txt principal que é acionado na linha de comando? Se isso não for possível, posso simplesmente executar vários arquivos em lote FTP a partir de um único comando de linha de comando.

Responder1

Você poderia usarWinSCPcomocliente FTP com script.

A funcionalidade de script WinSCPnão suporta nenhuma sequência de controle, manipulação de caminhos de arquivo, etc. Se precisar deles, você deve chamar o script WinSCP a partir de um script wrapper implementado em outra linguagem de script (comoscript VB). Qualquer idioma que suporteCOM/ActiveXpode ser usado.

Exemplodo site WinSCP:

<job>
<reference object="WinSCP.Session" />
<script language="VBScript">

Option Explicit

' Setup session options
Dim sessionOptions
Set sessionOptions = WScript.CreateObject("WinSCP.SessionOptions")
With sessionOptions
    .Protocol = Protocol_Sftp
    .HostName = "example.com"
    .UserName = "user"
    .Password = "mypassword"
    .SshHostKeyFingerprint = "ssh-rsa 1024 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
End With

Dim session
Set session = WScript.CreateObject("WinSCP.Session")

' Connect
session.Open sessionOptions

' Upload files
Dim transferOptions
Set transferOptions = WScript.CreateObject("WinSCP.TransferOptions")
transferOptions.TransferMode = TransferMode_Binary

Dim transferResult
Set transferResult = session.PutFiles("d:\toupload\*", "/home/user/", False, transferOptions)

' Throw on any error
transferResult.Check

' Print results
Dim transfer
For Each transfer In transferResult.Transfers
    WScript.Echo "Upload of " & transfer.FileName & " succeeded"
Next

' Disconnect, clean up
session.Dispose

</script>
</job>

Modifique esse script para atender às suas necessidades específicas/dinâmicas.

informação relacionada