2013-05-08 21 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に別のファイルにPSFTPスクリプト(openからbyeへのライン)を格納し、それを渡す必要があります:script.txtが想定される

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

C:\Program Files (x86)\PuTTYにします。あるいは、完全なパスを指定してください(二重引用符にパスを囲むことを忘れないでください。特にスペースが含まれている場合は、cdコマンドを使用することをお勧めします)。

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


EDIT:ユーザー名+パスワードの場合:あなたは、同じ理由で、バッチファイルで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シェルは何ですか。

+0

こんにちはマーティン お返事ありがとうございました。あなたの言ったとおりに修正しました。 私の画面がこのようにハングするようになりました。 C:\ Program Files(x86)\ PuTTY>ファイル名、ディレクトリ名、またはボリュームラベルの構文が正しくありません。C:\ Program Files(x86)\ PuTTY> b script.txt psftp:ホスト名が指定されていません。 – suresh

+0

1) '' cd "C:\ ... \ PuTTY" '2)私の答えの編集を参照してください –

+0

それは完璧に、ありがとう。 – suresh