操作期间删除了WinSCP跳过文件

问题描述 投票:2回答:1

我在MS Access中有一个按钮,它创建一个包含一些图像,PDF和Access .mdb文件的文件夹,然后打开WinSCP以运行命令将文件夹上载到FTP服务器。

我遇到的一个问题是,由于“缺少.ldb文件”,上传时间会不时失败。基本上发生的事情是,当创建.mdb时,Access会临时创建它的锁定.ldb文件,有时直到WinSCP开始运行之后,该.ldb文件才会消失。然后WinSCP会浏览上传它们的所有文件,转到.ldb,并因为它不再存在而失败。

起初我认为排除.ldb文件会起作用,但事实并非如此。

所以现在我认为跳过不存在的文件是最简单的解决方案。

这可能吗?

(甚至可能在脚本开始时延迟作为另一种解决方案?)

要上传的代码:

Dim strSFTPDir As String
strSFTPDir = "C:\Program Files (x86)\WinSCP\"
Dim UploadsDir As String
UploadsDir = DLookup("PathToPics", "Admin") & "\Uploads\*"
Call Shell(strSFTPDir & "winscp.com /log=""C:\-TabletSoftware-\TabletBE\upload.log"" /command ""open ftp://username:password@ip/"" ""put -filemask=|*.ldb " & UploadsDir & " "" ""exit"" ", vbNormalFocus)

另外,另一件有用的事情是,如果有人知道如何使用包含空格的目录。


编辑:好吧我认为我有它的工作,但由于错误最初只是偶尔发生,只有时间会告诉我。在运行WinSCP之前,修复程序位于Access中。它只是一个循环,直到.ldb被删除。

Do While (Dir(StnPth & "\To Mail.ldb") <> "")
Loop
ms-access ftp winscp
1个回答
1
投票

您需要使用WinSCP 5.15,如果您需要handle correctly的情况,当文件传输选择文件(*中的UploadsDir),但排除掩码(-filemask=|*.ldb)排除,但在put启动后删除,但在WinSCP到达该文件之前。


如果您遇到较旧版本的WinSCP,则只能选择所需的文件,而不是选择所有文件,然后排除部分文件。

使用lcd command将工作目录更改为UploadsDir(不使用*)更容易,因此您只能枚举put command中的正文件掩码。

With multiple masks, you need to use target folder at the end(使用./上传到当前工作目录)。

UploadsDir = DLookup("PathToPics", "Admin") & "\Uploads"

Call Shell(... """lcd " + UploadsDir + """ ""put *.mdb *.other *.yetanother ./"" ""exit"" ", ...)
© www.soinside.com 2019 - 2024. All rights reserved.