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