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

FTP Shell - Get all files that do not equal a condition

我目前正在使用 VBA (Excel) 调用 FTP Shell 从目录中抓取文件。我想获取目录中不包含通配符 %payment% 的所有文件,但我不确定语法。

Sub executeFTPBatch()
    Call Shell("FTP -i -s:C:\temp\ftp_directions.txt")
End Sub

所以我的文本文件打开FTP服务器,输入user/pw然后选择目录。我只需要将命令放入文本文件。像

mget *. * where filename != %payment% "c:\temp\" "ftp://currentfolder"

如有任何帮助,我们将不胜感激!

我不确定,什么是 "wildcard %payment%"。

尽管内置 Windows ftp.exe 以任何方式支持负掩码。


我可以建议这些解决方案:

  • 运行 ftp.exe一次获取目录列表(ls命令);解析您的 VBA 代码中的列表; select你想要的文件;并动态生成另一个 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""")
    

    为了便于阅读,以上 运行s 这些 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的作者)