2015-08-13 84 views
0

我正在使用VBA(Excel)調用FTP Shell從目錄中獲取文件。我想抓取目錄中不包含通配符%payment%的所有文件,但我不確定語法。FTP Shell - 獲取所有不等於條件的文件

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" 

任何幫助將不勝感激!

回答

1

我不確定什麼是「通配符%付款%」。

雖然內置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:[email protected]/"" " & _ 
        """get /path/* C:\path\ -filemask=|*%payment%*"" " & _ 
        """exit""") 
    

    爲了方便閱讀,上面運行這些WinSCP賦予命令:

    open ftp://user:[email protected]/ 
    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的作者)

+0

謝謝!這是一個好主意。 – Snoobie