我假設batch2.bat
產生一個sftp
腳本(put
等),對不對?因此,您希望將其輸出存儲到臨時文件(命名管道),並將其名稱用作sftp -b
的參數。
即使在* nix上,你的語法也是錯誤的。它應該是:
sftp -b <(batch2.bat %3 %4) %1
注意<
。
無論如何,這個(進程替代)在Windows上是不可能的。
你必須使用一個臨時文件:
call batch2.bat %3 %4 > sftp.txt
echo %2 | sftp -b sftp.txt %1
del sftp.txt
但需要注意的是,在Gow(爲0.8.0版本)的sftp
只是一個別名過時psftp
(0.63版本)。
牌九中的sftp
是一個批處理文件,它看起來像:
@echo off
psftp %1 %2 %3 %4 %5 %6 %7 %8 %9
您應該使用official up-to-date release of the psftp
代替。
此外psftp
無法從重定向輸入中讀取密碼(* nix sftp
也不能)。
可以使用-pw
開關來代替:
psftp -b sftp.txt -pw %2 %1
(請注意,* nix的sftp
沒有-pw
開關)
或者使用Windows命令行SFTP客戶端可以在命令行上執行命令,以避免您嘗試使用的所有黑客行爲。
例如與WinSCP:
@ECHO OFF
SET inputLoc=%3
SET outputLoc=%4
winscp.com /command^
"open sftp://user:[email protected]/"^
"put ""%inputLoc%"" ""%outputLoc%"""^
"exit"
(請注意,在WinSCP賦予你在session URL的用戶名和主機名一起指定密碼,所以我不能直接使用當前的%1
和%2
參數)
對於介紹的WinSCP腳本,請參見:
https://winscp.net/eng/docs/guide_automation
(我的WinSCP的作者)
需要注意的是不論,你到底是什麼客戶端使用起來,你必須與主機密鑰驗證某種方式處理。
看如何verify the host key in WinSCP script。
FTP通常可以採用自己的命令。 batch2.bat是做什麼的?向我們展示該代碼。 – SomethingDark