
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 WinSCP
unterstü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.