我正在使用批處理文件通過PSFTP將文件傳輸到第三方服務器。在傳輸文件時,由於緩衝問題,文件被破壞/未完全傳輸。傳輸完成後PSFTP重命名文件
作爲補救措施,第三方要求我們在開始文件傳輸之前用'.new'命名每個文件,並在完全/成功傳輸文件後刪除'.new'。
請讓我知道上面實現的批處理腳本命令。如果您需要其他信息,請告訴我。
我正在使用批處理文件通過PSFTP將文件傳輸到第三方服務器。在傳輸文件時,由於緩衝問題,文件被破壞/未完全傳輸。傳輸完成後PSFTP重命名文件
作爲補救措施,第三方要求我們在開始文件傳輸之前用'.new'命名每個文件,並在完全/成功傳輸文件後刪除'.new'。
請讓我知道上面實現的批處理腳本命令。如果您需要其他信息,請告訴我。
要重命名文件,使用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的作者)
'psftp'有一個'ren'命令在遠程計算機上重命名文件。在'psftp'提示符下輸入'help'並按下Enter鍵。 'ren'將被放入用於傳輸文件的ftp腳本中。 – lit