我正在使用批处理文件通过 PSFTP 将文件传输到 3rd 方服务器。在传输文件时,由于缓冲问题,文件被破坏/未完全传输。
作为补救措施,第 3 方要求我们在开始文件传输之前用“.new”命名每个文件,并在文件完全/成功传输后删除“.new”。
请让我知道上面实现的批处理脚本命令。如果您需要更多信息,请告诉我。
我正在使用批处理文件通过 PSFTP 将文件传输到 3rd 方服务器。在传输文件时,由于缓冲问题,文件被破坏/未完全传输。
作为补救措施,第 3 方要求我们在开始文件传输之前用“.new”命名每个文件,并在文件完全/成功传输后删除“.new”。
请让我知道上面实现的批处理脚本命令。如果您需要更多信息,请告诉我。
要重命名文件,请使用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的作者)