Ausführen einer FTP-Batchdatei innerhalb einer Batchdatei

Ausführen einer FTP-Batchdatei innerhalb einer Batchdatei

I have a scheduled task which executes the commands in my file ftp.txt every day. The file can be seen below, it connects via ftp to my site and puts 3 XML files on to my web server.

command:

ftp -s:filename

File executed by command

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

Ich muss jetzt dieselben Übertragungen ausführen, aber an Sites mit unterschiedlichen FTP-Details. Ich möchte nicht für jede Übertragung eine neue Windows-Aufgabe planen, daher habe ich mich gefragt, ob es eine Möglichkeit gibt, andere ftp.txt-Dateien aus der Haupt-ftp.txt-Datei auszuführen, die über die Befehlszeile ausgelöst wird. Wenn das nicht möglich ist, könnte ich einfach mehrere FTP-Batchdateien über einen einzigen Befehlszeilenbefehl ausführen.

Antwort1

Du könntest benutzenWinSCPalsgeskripteter FTP-Client.

Die Skriptfunktion WinSCPunterstützt keine Steuersequenzen, Manipulation von Dateipfaden usw. Wenn Sie diese benötigen, müssen Sie das WinSCP-Skript aus einem Wrapper-Skript aufrufen, das in einer anderen Skriptsprache implementiert ist (wieVBscript). Jede Sprache, die unterstütztCOM/ActiveXkann verwendet werden.

Beispielvon der WinSCP-Site:

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

Ändern Sie ein solches Skript, um Ihren spezifischen/dynamischen Anforderungen gerecht zu werden.

verwandte Informationen