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

Using 'for' command to find and download the latest file on SFTP server in 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 时才会出现此问题。这是为什么?

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

几乎没有任何合理的方法可以使用 psftp 检索最新文件。您必须分两步完成。首先检索列表并将其存储到文件中。然后使用一些智能批处理文件命令解析该文件以查找最新文件。然后 运行 psftp 再次下载该文件。由于需要两个连接,因此很麻烦且效率低下。

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