传输完成后,PSFTP重命名文件

时间:2017-05-30 16:25:01

标签: windows batch-file cmd sftp psftp

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

作为补救措施,第三方要求我们将每个文件命名为' .new'在开始文件传输之前删除' .new'一旦文件完全/成功传输。

请让我知道上面要实现的批处理脚本命令。如果您需要其他信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

要重命名文件,请使用mv command(或其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 file lock mechanism

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

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

有关详细信息,请参阅Uploading to temporary file name上的WinSCP文章。

文章还显示了(更复杂的方式)solution using WinSCP .NET assembly that allows you to use even the .new extension

如果您选择切换到WinSCP,则会guide for converting psftp script to WinSCP

(我是WinSCP的作者)