VBScript, чтобы получить новейший файл на FTP-сайте - PullRequest
1 голос
/ 13 сентября 2010

Мне нужно придумать vbscript, чтобы получить файл с ftp-сайта, где имя файла находится в форме «vendor (date) (date) (random #). Zip». Эти файлы обновляются ежедневно, поэтому мне нужно регулярное выражение или способ выбрать самый новый файл на сервере и загрузить его. Я знаю, как справиться с этим в локальной файловой системе, но я не знаю, как определить, какой файл получить на удаленном FTP-сервере.

Ответы [ 2 ]

2 голосов
/ 13 сентября 2010

Забавно, что вы опубликовали это, потому что мне только что пришлось выбить сценарий, чтобы почти точно дословно выполнить то, что вы просите.По сути, все, что вам действительно нужно сделать, - это чтобы ваш скрипт создал командный файл FTP, а затем вызвал его.

Используйте ваш метод выбора, чтобы создать строку для хранения даты в любом формате, который вы ищете, я назвал его strDate, и в моем случае это был следующий синтаксис: headerinfo.13September10 Где headerinfo является стандартомЗаголовок файла с прикрепленным к нему номером.

Запишите файл команды FTP:

Dim objOutStream
Set objOutStream = objFSO.OpenTextFile(strCommandFile, ForWriting, True, TristateFalse)
With objOutStream
    .WriteLine "USER xxxxxx"   ' USERNAME
    .WriteLine "xxxxxxftp"     ' Password
    .WriteLine "binary"
    .WriteLine "prompt n"
    .WriteLine "lcd " & strNetmonData ' FOLDER I'm changing into
    .WriteLine "mget *." & strDate    ' Get all files with today's date in it
    .WriteLine "bye"
    .Close
End With

Затем в вашем скрипте вы просто позвоните ему:

WSHShell.Run "%comspec% /c FTP -n -s:" & strCommandFile & " " & strSite, 0, True

Где strSite - это IP-адрес или имя сайта, к которому вы пытаетесь подключиться.

0 голосов
/ 03 февраля 2016

Следующий код поможет вам получить последнее имя файла с ftp-сервера, после чего вы сможете скачать его.

Const ForWriting = 2

Dim objOutStream, objjFSO, objShell

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objOutStream = objFSO.OpenTextFile("C:\temp\temp\empty.txt", ForWriting,True)

With objOutStream

.WriteLine sUsername   ' USERNAME

.WriteLine sPassword     ' Password

.WriteLine "cd /"& sRemotePath' FOLDER I'm changing into

.WriteLine "ls -rt tmp/listing.txt"    

.WriteLine "quit"

.Close

End With

Set objShell = CreateObject("WScript.Shell")

 objShell.Run "%Comspec% /c FTP -i -s:" & "C:\temp\temp\empty.txt" & " " & sSite

wait(2)

Set strCommand = objShell.Exec ("%Comspec% /c head -1 tmp\listing.txt")

Set objStdOut = strCommand.StdOut

    strFilename = objStdOut.ReadLine
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...