且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

使用用户名和密码的VBScript FTP登录

更新时间:2022-04-14 15:16:15

这确实是一个非常糟糕的方法。您不能仅将远程FTP站点上的文件夹视为本地文件夹。

This really is an incredibly bad way to do this. You can't just treat folders on a remote FTP site as local folders.

您真的应该使用InetCtrls.Inet.1

You really should be using InetCtrls.Inet.1

下面是我从其他地方取消的一个例子,它不会满足您的需求,但包含您需要的所有零件 - 您需要将其分开以满足您的需求。

Here's an example I lifted from somewhere else that does not do what you want, but contains all the parts you need - you need to pick it apart to suit your needs.

'Option Explicit
'const progname="FTP upload script by Richard Finegold"
'const url = "ftp://ftp.myftpsite.com"
'const rdir = "mydir"
'const user = "anonymous"
'const pass = "myname@mymailsite.com"

'This is an example of ftp'ing without calling the external "FTP" command
'It uses InetCtrls.Inet.1 instead
'Included is a "hint" for simple downloading

'Sources:
'http://msdn.microsoft.com/library/partbook/ipwvb5/loggingontoftpserver.htm
'http://msdn.microsoft.com/library/partbook/egvb6/addinginternettransfercontrol.htm
'http://cwashington.netreach.net/ - search on "ftp" - inspiration only!

'Insist on arguments
dim objArgs
Set objArgs = Wscript.Arguments
If 0=objArgs.Count Then
   MsgBox "No files selected for operation!", vbOkOnly + vbCritical, progname
   WScript.Quit
End If


'Force console mode - csforce.vbs (with some reorganization for efficiency)
dim i
if right(ucase(wscript.FullName),11)="WSCRIPT.EXE" then
  dim args, y
  For i = 0 to objArgs.Count - 1
    args = args + " " + objArgs(i)
  Next
  Set y = WScript.CreateObject("WScript.Shell")
  y.Run "cscript.exe " & wscript.ScriptFullName + " " + args, 1
  wscript.quit
end if


'Do actual work
dim fso, ftpo
set fso = WScript.CreateObject("Scripting.FileSystemObject")
set ftpo = WScript.CreateObject("InetCtls.Inet.1")     'Msinet.ocx
ftpo.URL = url
ftpo.UserName = user
ftpo.Password = pass
WScript.Echo "Connecting..."
ftpo.Execute , "CD " & rdir
do
'     WScript.Echo "."
     WScript.Sleep 100     'This can take a while loop while ftpo.StillExecuting


for i = 0 to objArgs.Count - 1
     dim sLFile
     sLFile = objArgs(i)

     if (fso.FileExists(sLFile)) then
          WScript.Echo "Uploading " & sLFile & " as " & FSO.GetFileName(sLFile) & " "
          ftpo.Execute , "Put " & sLFile & " " & FSO.GetFileName(sLFile)
          'ftpo.Execute , "Get " & sRemoteFile & " C:\" & sLFile
          do
          'WScript.Echo "."
               WScript.Sleep 100     'This can take a while
          loop while ftpo.StillExecuting
     else
          MsgBox Chr(34) & sLFile & Chr(34) & " does not exist!", _
           vbOkOnly, progname
     end if
next
WScript.Echo "Closing"
ftpo.Execute , "Close"
WScript.Echo "Done!"