1

我正在使用批处理文件通过 PSFTP 将文件传输到 3rd 方服务器。在传输文件时,由于缓冲问题,文件被破坏/未完全传输。

作为补救措施,第 3 方要求我们在开始文件传输之前用“.new”命名每个文件,并在文件完全/成功传输后删除“.new”。

请让我知道上面实现的批处理脚本命令。如果您需要更多信息,请告诉我。

4

1 回答 1

0

要重命名文件,请使用mv命令(或其ren别名):

put c:\local\path\file /remote/path/file.new
mv /remote/path/file.new /remote/path/file

尽管如果您使用通配符传输多个文件,这对您没有帮助。

对于多个文件,一个相对简单的解决方案是使用临时上传文件夹。上传完成后,您可以一次将所有文件移动到目标文件夹:

mput c:\local\path\* /temp/path
mv /temp/path/* /remote/path

有关类似讨论,另请参阅SFTP 文件锁定机制


如果您需要使用带有扩展名的解决方案,您可以使用 WinSCP,因为它允许您自动使用临时文件名进行上传。虽然它使用.filepart,而不是.new扩展名。

put -resumesupport=on c:\local\path\* /remote/path/

有关详细信息,请参阅有关上传到临时文件名的WinSCP 文章。

该文章还展示了(一种更复杂的)使用 WinSCP .NET 程序集的解决方案,它甚至允许您使用.new扩展名.

如果您选择切换到 WinSCP,则有一个将 psftp 脚本转换为 WinSCP 的指南

(我是WinSCP的作者)

于 2017-05-31T04:51:43.893 回答