使用“ for”命令在PSFTP中的SFTP服务器上查找并下载最新文件

时间:2019-06-18 17:00:08

标签: batch-file ssis sftp psftp

我已经按照以下指南设置了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 个答案:

答案 0 :(得分:2)

psftp脚本文件只能包含psftp命令。 forsetdir不是psftp命令。

几乎没有使用psftp检索最新文件的合理方法。您将必须分两个步骤进行操作。首先检索清单并将其存储到文件中。然后使用一些智能批处理文件命令解析该文件以找到最新文件。然后再次运行psftp下载该文件。这很麻烦且无效,因为它需要两个连接。

您最好使用功能更强大的SFTP客户端。例如,对于我的WinSCP SFTP client来说是微不足道的。见