FTP Shell - 获取所有不等于条件的文件

时间:2015-08-13 20:54:55

标签: vba shell ftp

我目前正在使用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"

非常感谢任何帮助!

1 个答案:

答案 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指南。

    另见WinSCP file mask reference

    或者,您可以使用VBA代码中的WinSCP .NET assembly via COM

    (我是WinSCP的作者)