从批处理文件中运行 ftp 批处理文件

从批处理文件中运行 ftp 批处理文件

我有一个计划任务,每天执行文件 ftp.txt 中的命令。该文件如下所示,它通过 ftp 连接到我的网站并将 3 个 XML 文件放到我的 Web 服务器上。

命令:

ftp -s:filename

命令执行的文件

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

我现在必须执行相同的传输,但传输到具有不同 ftp 详细信息的站点。我不想为每次传输安排新的 Windows 任务,所以我想知道是否有办法从由命令行触发的主 ftp.txt 文件执行其他 ftp.txt 文件?如果这不可能,我是否可以通过单个命令行命令运行多个 ftp 批处理文件。

答案1

你可以使用温SCP作为脚本化 FTP 客户端

的脚本功能WinSCP不支持任何控制序列、文件路径操作等。如果您需要这些,您必须从用另一种脚本语言实现的包装脚本中调用 WinSCP 脚本(如VB脚本)任何支持组件/ActiveX可以使用。

例子来自 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>

修改此类脚本以满足您的特定/动态需求。

相关内容