Файл пропуска WinSCP удален во время работы - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть кнопка в 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)

Также еще одна полезная вещь, если кто-нибудь знает, как использовать каталоги, содержащие пробелы.


Редактировать: Ладно, я думаю У меня это работает, но поскольку ошибка изначально возникала только время от времени, время покажет. Исправление находится в Access непосредственно перед запуском WinSCP. Это просто цикл, пока файл .ldb не будет удален.

Do While (Dir(StnPth & "\To Mail.ldb") <> "")
Loop

1 Ответ

0 голосов
/ 13 сентября 2018

Вам необходимо использовать WinSCP 5.15, если вам нужно правильно обработать ситуацию, когда файл выбран для передачи файла (* в UploadsDir), но исключенисключить маску (-filemask=|*.ldb), но удалить после запуска put, но до того, как WinSCP попадет в этот файл.


Если вы застряли с более старой версией WinSCP, вы можете выбрать толькофайлы, которые вам нужны, вместо выбора всех, а затем исключения некоторых.

С помощью команды lcd проще изменить рабочий каталог на UploadsDir (без *), поэтомучто вы можете затем перечислять только положительные маски файлов в команде put .

С несколькими масками вам необходимо использовать целевую папку в конце (используйте ./ для загрузки в текущий рабочий каталог).

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

Call Shell(... """lcd " + UploadsDir + """ ""put *.mdb *.other *.yetanother ./"" ""exit"" ", ...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...