Executa um arquivo de lote ftp de dentro de um arquivo de lote

1

Eu tenho uma tarefa agendada que executa todos os dias os comandos do meu arquivo ftp.txt. 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. Eu não quero agendar uma nova tarefa do Windows para cada transferência, então eu queria saber se existe uma maneira de executar outros arquivos ftp.txt a partir do arquivo ftp.txt principal que é acionado a partir da linha de comando? Se isso não for possível eu poderia apenas executar vários arquivos em lote ftp de um único comando de linha de comando.

    
por Tom smith 19.08.2013 / 21:07

1 resposta

2

Você pode usar o WinSCP como cliente FTP com script .

A funcionalidade de script de WinSCP não suporta sequências de controle, manipulação de caminhos de arquivos, etc. Se você precisar delas, você precisa chamar o script WinSCP de um script de invólucro implementado em outra linguagem de script (como VBscript ). Qualquer idioma que suporte COM / ActiveX pode ser usado.

Exemplo do site do 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 cuidar de suas necessidades específicas / dinâmicas.

    
por 19.08.2013 / 23:07