1

У меня есть запланированное задание, которое выполняет команды в моем файле 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 ответ1

2

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .