【问题标题】:FTP Shell - Get all files that do not equal a conditionFTP Shell - 获取所有不等于条件的文件
【发布时间】:2015-08-13 20:54:55
【问题描述】:

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

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

所以我的文本文件打开 FTP 服务器,输入用户/密码,然后选择目录。我只需要将命令放入文本文件中。类似的东西

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

任何帮助将不胜感激!

【问题讨论】:

    标签: vba shell ftp


    【解决方案1】:

    我不确定,什么是“通配符 %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 的作者)

    【讨论】:

    • 谢谢!这是个好主意。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 2011-08-25
    • 1970-01-01
    • 2017-03-27
    • 2020-10-11
    • 1970-01-01
    相关资源
    最近更新 更多