Запустить пакетный файл ftp из пакетного файла

Запустить пакетный файл ftp из пакетного файла

У меня есть запланированная задача, которая выполняет команды в моем файле ftp.txt каждый день. Файл можно увидеть ниже, он подключается через ftp к моему сайту и помещает 3 XML-файла на мой веб-сервер.

команда:

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

Вы могли бы использоватьWinSCPкакскриптовый FTP-клиент.

Функциональность сценариев WinSCPне поддерживает никаких управляющих последовательностей, манипуляций с путями к файлам и т. д. Если вам это нужно, вам придется вызвать сценарий WinSCP из сценария-оболочки, реализованного на другом языке сценариев (например,VBскрипт). Любой язык, который поддерживаетCOM/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>

Измените такой сценарий, чтобы он соответствовал вашим конкретным/динамическим потребностям.

Связанный контент