我在D盘上创建了一个测试文件。我的目标是从Excel中的VBA脚本将其上传到我的网站。当我运行.bat文件时,它将在放置期间挂起。我究竟做错了什么?我注释掉了/行,因为那给了我一个错误。
在命令提示符下运行upload.bat时进行回复
D:\>upload.bat
D:\>ftp -i -s:d:\script.dat domain.com
Connected to domain.com.
220 *** FTP Server Ready
200 UTF8 set to on
User (domain.com:(none)):
331 Password required for username
230 User username logged in
ftp> put d:\test.txt
200 PORT command successful
425 Unable to build data connection: Connection timed out
ftp> quit
221 Goodbye.
enter code here
Sub ftp()
Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("d:\script.dat", True)
a.writeline "username" 'username
a.writeline "password" 'password
'a.writeline "\" 'directory on FTP site
a.writeline "put d:\test.txt" 'file to be uploaded
a.writeline "quit"
a.Close
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("d:\upload.bat", True)
a.writeline "ftp -i -s:d:\script.dat domain.com" 'the ftp site
a.Close
dRetVal = Shell("d:\upload.bat", 0) 'upload the file
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:1)
200 PORT命令成功
425无法建立数据连接:连接超时
通常会发生这种情况,如果您位于某些防火墙或执行NAT的设备(即典型的SoHo路由器)后面。 FTP需要进行分离数据连接,并且在活动模式下(如您在此处使用),服务器尝试连接到客户端-在给定的情况下,由于连接重置或超时(如您的情况),填充失败。 >
您最好使用被动模式,在该模式下,客户端将尝试连接到服务器以进行数据连接。不幸的是,Windows does not seem to support passive mode中的内置命令行客户端,因此您需要使用其他客户端。