2017-05-30 29 views
1

我正在使用批處理文件通過PSFTP將文件傳輸到第三方服務器。在傳輸文件時,由於緩衝問題,文件被破壞/未完全傳輸。傳輸完成後PSFTP重命名文件

作爲補救措施,第三方要求我們在開始文件傳輸之前用'.new'命名每個文件,並在完全/成功傳輸文件後刪除'.new'。

請讓我知道上面實現的批處理腳本命令。如果您需要其他信息,請告訴我。

+0

'psftp'有一個'ren'命令在遠程計算機上重命名文件。在'psftp'提示符下輸入'help'並按下Enter鍵。 'ren'將被放入用於傳輸文件的ftp腳本中。 – lit

回答

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/ 

有關更多詳細信息,請參閱WinSCP文章Uploading to temporary file name

該文章還顯示(一種更復雜的方式)solution using WinSCP .NET assembly that allows you to use even the .new extension

如果您選擇切換到WinSCP,則有一個guide for converting psftp script to WinSCP

(我的WinSCP的作者)