Ejecute un archivo por lotes ftp desde un archivo por lotes

Ejecute un archivo por lotes ftp desde un archivo por lotes

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 WinSCPno 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.

información relacionada