我需要使用vbscript从ftp站点获取文件,其中文件名的格式为“vendor(date)(date)(random#)。zip”。这些文件每天更新,所以我需要一个正则表达式或方法来选择服务器上的最新文件并下载它。我知道如何在本地文件系统上处理这个问题,但我不知道如何确定在远程ftp服务器上获取哪个文件。
答案 0 :(得分:2)
有趣的是你发布了这个,因为我最近不得不敲出一个脚本,几乎完全一字一句地做你要求的。基本上,您真正需要做的就是让脚本创建一个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或名称。
答案 1 :(得分:0)
以下代码将帮助您从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