が、私は以下のようにスクリプトを期待TCLをテストした: "F:\Workspace\>
"なぜtclは予期せず終了すると思われますか? Windowsでは
package require Expect
spawn "cmd.exe"
expect ">"
send "echo hello world\r"
しかし、出力が印刷され、それが終了しました。 ソースコードのうち、「echo hello world
」
が、私は以下のようにスクリプトを期待TCLをテストした: "F:\Workspace\>
"なぜtclは予期せず終了すると思われますか? Windowsでは
package require Expect
spawn "cmd.exe"
expect ">"
send "echo hello world\r"
しかし、出力が印刷され、それが終了しました。 ソースコードのうち、「echo hello world
」
。 telnet.exeは1つであり、cmd.exeも別のものである可能性があります。 (ファイルフラグIIRCにシステムビットが設定されています)
幸いにも、問題の原因となるプログラムは通常、Expectで自動化するが必要です。 Tclはsocket
を開いて直接他のマシンと対話する能力があり、cmdはしばしば不要であり、他の場合はexec
コマンドを使用するだけで簡単に自動化することができます。これがあなたのリアルの自動化のプロキシである単なるテストだったら、あまり心配しないでください。実際のプログラムを自動化しようとしますが、そこから始まってそこから構築するだけの簡単なこと(ちゃんと終了するようなこと)をしてください。
実際に解決しようとしている問題を教えてください。しかし、いずれにせよ、あなたはちょうどあなたが必要との結果を得るために、代わりに
send "echo hello world\r"
の echo hello world
を入力する必要があります。ための方法(それは特別なデバッグモードを使用しています)キャプチャすることができない特定のプログラムがあるWindowsが動作するために期待する
歓声 ブライアン
なぜ誰かが私に-1を与えたのか分かりません。 Expect on Windowsの問題はよく知られています。だから私は元の質問者に彼が本当に解決しようとしていた問題を尋ねました。その間に、私が与えた解決策は実際に動作します。つまり、彼のコードを取り、 'send'行を' echo hello world'に置き換えると、彼は "echo hello world"を実行することを期待しています – TrojanName
私はあなたにdownvoteをしませんでしたが、その理由はあなたが質問者が(おそらく)*本当に*別のアプリケーションで作業しようとしていて、CMD.EXEを試してみるという印をつけなかったと思います。 (結局のところ、実際にCMDをプロダクションのように自動化するのは面倒ではありませんが、それは必要ありません!)つまり、提案したものはまったく役に立たないということです。問題の可能性があることを指摘した私の答えと対照的に(CMDのシステムビットは魔法をかける)、本当のアプリで質問者に試してもらいたいと願っています。 –
言い換えれば、質問に答えるときには、相手がそれを求めている理由を考えなければならず、理解して受け入れることができるような方法で彼らに役立つ答えを表現する必要があります。それは多くの練習を必要とする。 –
FTPは、Expect forを使用する必要のない別のプログラムです。 Tcllibには完全に適切なFTPクライアントがあります( 'ftp'と呼ばれ、奇跡的に!)。 –