2013-05-08 202 views
11

我有一個批處理文件,用於通過SFTP將文件從本地PC移動到服務器。我的系統中安裝了PuTTY,批處理文件代碼如下。PuTTY/PSFTP文件傳輸自動化的批處理文件

cd C:\Program Files (x86)\PuTTY 
psftp 
open <IP> 
<user> 
<PW> 
cd /home/irisuser/iris/integration/dls_dlsblr_dlschnn_in_msg/in 
lcd d:\ 
put log.sh 
bye 

當我在命令提示符下鍵入它時,上面的代碼完美地起作用。但是,當我雙擊.bat文件並運行它時,它並未運行,並要求輸入用戶名和密碼。我的目標是自動化整個事情,我需要通過簡單地點擊.bat文件來運行它。但我無法實現它。任何想法或片段都會幫助我。

回答

18

你需要使用-b切換到PSFTP腳本(從openbye線)存儲到一個單獨的文件,並傳遞到psftp

cd "C:\Program Files (x86)\PuTTY" 
psftp -b script.txt 

其中假定script.txt是在C:\Program Files (x86)\PuTTY。或者提供一個完整的路徑(不要忘記把路徑放在雙引號中,特別是如果它包含空格的話,你最好還是用你的cd命令來做)。

參考:
https://the.earth.li/~sgtatham/putty/latest/htmldoc/Chapter6.html#psftp-option-b


編輯:對於用戶名+密碼:正如你不能在一個批處理文件中使用psftp命令,出於同樣的原因,你不能指定用戶名和密碼psftp命令。這些是open命令的輸入。雖然您可以使用open命令(open <user>@<IP>)指定用戶名,但不能以這種方式指定密碼。這隻能在psftp命令行上完成。那麼它可能更清潔做的所有的命令行:

cd "C:\Program Files (x86)\PuTTY" 
psftp -b script.txt <user>@<IP> -pw <PW> 

從你script.txt刪除open<user><PW>線。

參考:
https://the.earth.li/~sgtatham/putty/latest/htmldoc/Chapter6.html#psftp-starting
https://the.earth.li/~sgtatham/putty/latest/htmldoc/Chapter3.html#using-cmdline-pw


你在做什麼大氣壓的是,你不帶任何參數或命令運行psftp。一旦你退出它(比如通過輸入bye),你的批處理文件會繼續嘗試運行open命令(以及其他),這是Windows shell顯然不理解的。

+0

嗨馬丁, 非常感謝噸快速回復。我已經修改,如你所說。 我的屏幕現在像這樣掛起。 (x86)\ PuTTY>「cd C:\ Program Files(x86)\ PuTTY」文件名,目錄名稱或卷標語法不正確C:\ Program Files(x86)\ PuTTY> psftp - b script.txt psftp:沒有指定主機名稱;使用「open host.name」登錄爲: – suresh 2013-05-08 12:46:36

+0

1)它是'cd「C:\ ... \ PuTTY」'2)請參閱我的回答中的編輯 – 2013-05-08 13:01:05

+0

它的運行完美,謝謝。 – suresh 2013-05-09 04:53:49