
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 WinSCP
nã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.