WinSCP跳过文件在操作过程中被删除

时间:2018-09-12 14:13:22

标签: ms-access ftp winscp

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

我遇到的一个问题是,由于“缺少.ldb文件”,上传有时会失败。基本上发生的是,当创建.mdb时,Access会临时创建它的锁定.ldb文件,有时.ldb文件直到WinSCP开始运行后才会消失。然后,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

1 个答案:

答案 0 :(得分:1)

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


如果使用WinSCP的旧版本,则只能选择所需的文件,而不是全部选择,然后排除某些文件。

使用lcd command将工作目录更改为UploadsDir(不使用*更加容易,这样您就只能在put command中枚举正文件掩码了。 / p>

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"" ", ...)