使用VBScript从FTP下载多个文件
我根本不是VB脚本方面的专家,但由于目前我的一个项目需要它,所以我正在尝试编写一个VBScript,它将从指定的FTP文件夹获取所有文件 我设法获取一个指定的文件,但似乎无法获取文件夹中的所有文件。以下是我尝试使用的脚本:使用VBScript从FTP下载多个文件,vbscript,ftp,Vbscript,Ftp,我根本不是VB脚本方面的专家,但由于目前我的一个项目需要它,所以我正在尝试编写一个VBScript,它将从指定的FTP文件夹获取所有文件 我设法获取一个指定的文件,但似乎无法获取文件夹中的所有文件。以下是我尝试使用的脚本: Dim objOutStream Const OpenAsDefault = -2 Const FailIfNotExist = 0 Const ForReading = 1 Const ForWriting = 2 Set objFSO = Crea
Dim objOutStream
Const OpenAsDefault = -2
Const FailIfNotExist = 0
Const ForReading = 1
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objOutStream = objFSO.OpenTextFile("C:\temp\temp\empty.txt", ForWriting, True, TristateFalse)
With objOutStream
.WriteLine "USER myuser" ' USERNAME
.WriteLine "mypass" ' Password
.WriteLine "binary"
.WriteLine "prompt n"
.WriteLine "lcd /foldertocopyfrom" ' FOLDER I'm changing into
.WriteLine "mget *" ' Get all files with today's date in it
.WriteLine "bye"
.Close
End With
Set oFTPScriptShell = CreateObject("WScript.Shell")
oFTPScriptShell.Run "%comspec% /c FTP -n -s:" & "C:\temp\temp\empty.txt" & " " & "ftp.location.com", 0, True
它没有给我一个错误或任何东西,它基本上什么也不做(是的,我确信/foldertocopy from:-)中有文件)
有什么想法吗?很明显我遗漏了什么
谢谢 我编写了一个函数来为您执行此操作。您可以在此处阅读并检查其代码:
我编写了一个函数来为您执行此操作。您可以在此处阅读并检查其代码:
我尝试了您的解决方案,但必须进行一些小的修复才能使其正常工作:
- 添加了显式选项(用于更好地检测未定义的变量)
- 删除了TristateFalse参数
- 由于交互模式已关闭,已删除切换后的
提示
- 将
更改为bye
quit
- 在FTP命令中添加了-i参数
- 另外,在脚本中使用FTP命令之前,我在命令行中测试了它
Option Explicit
Const ForWriting = 2
Dim objOutStream, objFSO, objShell
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objOutStream = objFSO.OpenTextFile("C:\temp\temp\empty.txt", ForWriting, True)
With objOutStream
.WriteLine "USER myuser" ' USERNAME
.WriteLine "mypass" ' Password
.WriteLine "binary"
.WriteLine "lcd /foldertocopyfrom" ' FOLDER I'm changing into
.WriteLine "mget *" ' Get all files with today's date in it
.WriteLine "quit"
.Close
End With
Set objShell = CreateObject("WScript.Shell")
objShell.Run "%comspec% /c FTP -n -i -s:" & "C:\temp\temp\empty.txt" & " " & "ftp.location.com", 0, True
我尝试了您的解决方案,但必须进行一些小的修复以使其正常工作:
- 添加了显式选项(用于更好地检测未定义的变量)
- 删除了TristateFalse参数
- 由于交互模式已关闭,已删除切换后的
提示
- 将
更改为bye
quit
- 在FTP命令中添加了-i参数
- 另外,在脚本中使用FTP命令之前,我在命令行中测试了它
Option Explicit
Const ForWriting = 2
Dim objOutStream, objFSO, objShell
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objOutStream = objFSO.OpenTextFile("C:\temp\temp\empty.txt", ForWriting, True)
With objOutStream
.WriteLine "USER myuser" ' USERNAME
.WriteLine "mypass" ' Password
.WriteLine "binary"
.WriteLine "lcd /foldertocopyfrom" ' FOLDER I'm changing into
.WriteLine "mget *" ' Get all files with today's date in it
.WriteLine "quit"
.Close
End With
Set objShell = CreateObject("WScript.Shell")
objShell.Run "%comspec% /c FTP -n -i -s:" & "C:\temp\temp\empty.txt" & " " & "ftp.location.com", 0, True
请从ftp位置下载以下代码
Function FTPDownload(sSite, sUsername, sPassword, sRemotePath)
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 "binary"
.WriteLine "cd /"& sRemotePath' FOLDER I'm changing into
.WriteLine "mget *" ' Get all files with today's date in it
.WriteLine "quit"
.Close
End With
Set objShell = CreateObject("WScript.Shell")
objShell.Run "%Comspec% /c FTP -i -s:" & "C:\temp\temp\empty.txt" & " " & sSite
End Function
注:例如
sSite:192.168.0.1请从ftp位置下载以下代码
Function FTPDownload(sSite, sUsername, sPassword, sRemotePath)
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 "binary"
.WriteLine "cd /"& sRemotePath' FOLDER I'm changing into
.WriteLine "mget *" ' Get all files with today's date in it
.WriteLine "quit"
.Close
End With
Set objShell = CreateObject("WScript.Shell")
objShell.Run "%Comspec% /c FTP -i -s:" & "C:\temp\temp\empty.txt" & " " & sSite
End Function
注:例如
sSite:192.168.0.1您的.Run没有指定ftp命令文件的完整文件规范。事实上,我忘了在这里添加它,但这不会导致问题…lcd-更改本地工作目录;cd-更改远程工作目录。您是否以交互方式尝试了这些命令?是的,奇怪的是,当我在Windows Powershell中尝试我的命令,并执行cd导入时,它会显示“Command Successfull”,但当我执行“dir”命令时,它什么都不做。。。。只是停留在那里,被占用…更正,它首先给我:200端口命令成功150打开/bin/ls的ASCII模式数据连接,然后它什么也不做:(你的.Run没有指定ftp命令文件的完整文件规范。事实上,我忘了在这里添加它,但这并不是问题的原因…lcd-更改本地工作目录;cd-更改远程工作目录。你是否以交互方式尝试了这些命令?是的,奇怪的是,当我在Windows Powershell中尝试命令时,我使用了cd Im端口显示“Command Successfull”,但当我执行“dir”命令时,它什么也不做…只是停留在那里,被占用…更正,它首先给出:200端口命令Successfull 150打开/bin/ls的ASCII模式数据连接,然后它什么也不做:(我实际上也在命令行中尝试过,后来意识到由于服务器上的文件损坏,操作失败了。)受够了,我开发了一个控制台应用程序,它做同样的事情,但有日志记录等。不过,你的帖子实际上帮了我很多忙,谢谢!!!我实际上也在命令行中尝试过l、 后来意识到操作失败是因为服务器上有一个损坏的文件。受够了,我开发了一个控制台应用程序,它做同样的事情,但有日志记录等。你的帖子实际上帮了我很多,谢谢!!!