
Tengo una tarea programada que ejecuta los comandos de mi archivo ftp.txt todos los días. El archivo se puede ver a continuación, se conecta vía ftp a mi sitio y coloca 3 archivos XML en mi servidor web.
dominio:
ftp -s:filename
Archivo ejecutado 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
Ahora tengo que ejecutar las mismas transferencias pero a sitios con diferentes detalles de ftp. No quiero programar una nueva tarea de Windows para cada transferencia, así que me preguntaba si hay alguna manera de ejecutar otros archivos ftp.txt desde el archivo ftp.txt principal que se activa desde la línea de comando. Si eso no es posible, ¿podría simplemente ejecutar varios archivos ftp por lotes desde una única línea de comando?
Respuesta1
Podrías usarWinSCPcomocliente FTP con script.
La funcionalidad de scripting WinSCP
no admite secuencias de control, manipulación de rutas de archivos, etc. Si los necesita, debe llamar al script WinSCP desde un script contenedor implementado en otro lenguaje de scripting (comoescritura VB). Cualquier idioma que admitaCOM/ActiveXpuede ser usado.
Ejemplodesde el sitio 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 dicho script para atender sus necesidades específicas/dinámicas.