Использование команды «for» для поиска и загрузки последнего файла на SFTP-сервер в PSFTP - PullRequest
3 голосов
/ 18 июня 2019

Я прошел через следующее руководство по настройке пакета служб SSIS для извлечения текстового файла, расположенного на SFTP-сервере:

https://www.mssqltips.com/sqlservertip/3435/using-sftp-with-sql-server-integration-services/

В итоге пакет SSIS выполняет PSFTP.exe (инструмент PuTTY), который принимает необходимые учетные данные для подключения к серверу.Он также принимает пакетный файл, который он выполняет после подключения.Этот пакетный файл содержит команды для получения желаемого текстового файла.Чтобы начать с руководства, оно просто содержит команду cmd для изменения каталога и команду get для извлечения файла:

cmd DataDump
get TeleMarketingResults.txt

Все это прекрасно работает.

Проблема возникает, когдаЯ пытаюсь сделать эту логику пакетного файла более сложной, поскольку она не распознает основные ключевые слова.Например, я хотел бы изменить его, чтобы получить самый последний файл, поэтому я попытался добавить это:

for /f %%i in ('dir /b/a-d/od/t:c') do set LAST=%%i
echo The most recently created file is %LAST%

, но затем я получаю следующие ошибки:

psftp: unknown command "for"
psftp: unknown command "echo"

Если я выполнюпакетный файл вручную в локальном каталоге, он работает.Эта проблема возникает только при передаче его в качестве параметра PSFTP.exe.Почему это?

1 Ответ

2 голосов
/ 18 июня 2019

Файл сценария psftp может содержать только команды psftp. for, set или dir не являются командами psftp.

Вряд ли есть какой-либо разумный способ получить последний файл с помощью psftp. Вы должны сделать это в два этапа. Сначала, чтобы получить список и сохранить его в файл. Затем проанализируйте этот файл, используя несколько команд умного пакетного файла, чтобы найти последние файлы. А затем снова запустите psftp, чтобы загрузить этот файл. Это громоздко и неэффективно, так как требует двух соединений.

Вам лучше использовать более мощный SFTP-клиент. Например, это просто для моего WinSCP SFTP-клиента . См

...