我目前正在使用VBA(Excel)调用FTP Shell从目录中获取文件。我想获取目录中不包含通配符%payment%的所有文件,但我不确定语法。
Sub executeFTPBatch()
Call Shell("FTP -i -s:C:\temp\ftp_directions.txt")
End Sub
所以我的文本文件打开FTP服务器,输入用户/ pw然后选择目录。我只需要将命令放入文本文件中。像
这样的东西mget *. * where filename != %payment% "c:\temp\" "ftp://currentfolder"
非常感谢任何帮助!
答案 0 :(得分:1)
我不确定,什么是“wildcard%payment%”。
虽然内置Windows ftp.exe
不以任何方式支持负面具。
我可以建议这些解决方案:
运行ftp.exe
一次以获取目录列表(ls
命令);解析您的VBA代码中的列表;选择你想要的文件;并动态生成另一个ftp
脚本以下载这些文件。
使用另一个支持负面罩的命令行FTP客户端。
例如,使用WinSCP scripting即可:
Call Shell( _
"C:\path\WinSCP.com /log=C:\path\excel.log /command " & _
"""open ftp://user:password@example.com/"" " & _
"""get /path/* C:\path\ -filemask=|*%payment%*"" " & _
"""exit""")
为了便于阅读,上面运行了这些WinSCP命令:
open ftp://user:password@example.com/
get /path/* C:\path\ -filemask=|*%payment%*
exit
如果您愿意,可以将命令放到脚本文件中并使用/script=
command-line parameter运行脚本,类似于ftp -s:
,而不是/command
。
请参阅Converting Windows FTP script to WinSCP script指南。
或者,您可以使用VBA代码中的WinSCP .NET assembly via COM。
(我是WinSCP的作者)