![](/img/trans.png)
[英]Batch script to move files from a local directory to a particular ftp location
[英]Windows Batch script to SFTP files to remote location and then move them up a directory once finished
我有一個問題,我上傳給供應商的文件在上傳完成之前就被消耗掉了。 為了解決這個問題,供應商為我提供了一個位置,我可以先在該位置上傳文件,然后要求我在上傳完成后移動它們。
去除敏感信息,我在我的 sftp 命令中批量引用這個文件 myfile.scr
cd /from_client/payments/upload
lcd E:/uploadfiles
mput uploadfiles.xml.*
quit
這會將文件上傳到遠程目錄上傳。 我知道需要讓他們進入上述級別。 理論上,這將正常處理,並且文件已經存在,因此應用程序在完成上傳之前不會使用它們。
我假設我需要做一項工作來構建文件列表,然后第二次循環遍歷它們以對遠程文件夾進行重命名,以使它們更上一層樓。
關於這如何工作的任何想法? 供應商在這里無能為力。
已經嘗試了各種解決方案,看看我是否可以使用 mv 但這不是一個選項,因為它不使用 Winscp。 我們只能使用批處理腳本,然后使用本機 sftp 命令。
您可以使用這樣的批處理文件為每個文件生成put
和rename
命令:
set SOURCE=E:\uploadfiles
set SCRIPT=myfile.scr
(
echo cd /from_client/payments/upload
echo lcd %SOURCE%
for %%F in (%SOURCE%\*) do (
echo put %%~nF
echo rename %%~nF /final/path/%%~nF
)
echo quit
) > %SCRIPT%
sftp user@host -b %SCRIPT%
它應該生成這樣的腳本:
cd /from_client/payments/upload
lcd E:\uploadfiles
put one.txt
rename one.txt /final/path/one.txt
put two.txt
rename two.txt /final/path/two.txt
put three.txt
rename three.txt /final/path/three.txt
quit
雖然有一個更有能力的客戶,但它會更容易。 例如,我的WinSCP支持帶有mv
命令的通配符,因此您可以簡單地執行以下操作:
WinSCP.com /ini=nul /log=winscp.log /command ^
"open sftp://user:password@host/ -hostkey=""...""" ^
"put E:\uploadfiles\* /from_client/payments/upload/" ^
"mv /from_client/payments/upload/* /final/path/" ^
"exit"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.