2013-07-20 79 views
0

我正在尝试登录到ftp主机并下载文件。我不知道如何找到该文件,因为它存储在日期下的目录中,并且每天都会更改。这是我迄今为止Vbscript登录到ftp

Option Explicit 
Dim objFSO, objMyFile, objShell, strFTPScriptFileName, strFilePut 
Dim strLocalFolderName, strFTPServerName, strLoginID 
Dim strPassword, strFTPServerFolder 


strLocalFolderName = "c:\foldername" 
strFTPServerName = "ftp.host.com" 
strLoginID = "somelogin" 
strPassword = "password8" 

所以我将如何登录到日期文件并找到这样的密码后,例如文件将是下

20130722/filename.ftp

+0

我不太确定这里的问题是什么。你问如何从当前日期创建文件夹名称?或者你问如何识别FTP服务器上文件夹中的特定文件?由什么区别特征? –

+0

嗨,我需要识别文件夹中的文件。它们存储在按日期命名的文件夹中,然后将文件存储在该文件夹中。所以该文件夹将是20130722,然后ftp文件在该文件夹中。所以当我手动登录时,我改变目录cd 20130722然后得到file.ftp – Mandy

+0

再次,你如何识别该文件?你知道这个名字吗?它是文件夹中唯一的文件吗?它是否有其他显着特征? –

回答

0

的通常的方式在VBScript中这样做是为了产生一个FTP脚本,然后运行以ftp.exe

'variable definitions 
... 

Function qq(str) 
    qq = Chr(34) & str & Chr(34) 
End Function 

Set fso = CreateObject("Scripting.FileSystemObject") 
Set sh = CreateObject("WScript.Shell") 

remoteDir = Year(Date) & Right("0" & Month(Date), 2) & Right("0" & Day(Date), 2) 
tempDir = sh.ExpandEnvironmentStrings("%TEMP%") 
script = fso.BuildPath(tempDir, "download.ftp") 
logfile = fso.BuildPath(tempDir, "ftp.log") 

Set f = fso.OpenTextFile(script, 2, True) 
f.WriteLine "open" & strFTPServerName & vbNewLine _ 
    & "user" & strLoginID & vbNewLine _ 
    & strPassword & vbNewLine _ 
    & "prompt no" & vbNewLine _ 
    & "lcd " & strLocalFolderName & vbNewLine _ 
    & "cd " & remoteDir & vbNewLine _ 
    & "get cs.ftp" & vbNewLine _ 
    & "bye" 
f.Close 

rc=sh.Run("%COMSPEC% /c ftp -s:" & qq(script) & " >" & qq(logfile), 0, True) 

WScript.Echo "FTP finished with exit code " & rc & "." 

fso.DeleteFile script, True 

上面应该工作开箱。如果您可以自由安装其他软件,则ActiveXperts' Network Component附带的FTP客户端可能是另一种选择。

+0

非常酷谢谢 – Mandy

+0

不客气。但是,请避免发布“谢谢”意见。在SO上表达感谢的正确方式是upvote和/或[接受](http://meta.stackexchange.com/a/5235)答案。 –

+0

好的会做的。对不起,我是这个网站的新手。 – Mandy