別のプロンプトから Windows コマンド プロンプトで実行されているサーバー出力を検出し、別の何かをトリガーしたいと考えています。出来ますか?
3 に答える
AutoIT などのスクリプト作成/自動化ツールを使用して、これを実現できると思います。完全に解決されたわけではありませんが、この問題に関するいくつかの考えについては、次のリンクを参照してください - http://www.autoitscript.com/forum/topic/64872-read-from-command-prompt-window/
「サーバー出力」の意味がよくわかりません。これはあなたが作成したアプリケーションですか? もしそうなら、画面テキストの解析だけに頼るのではなく、フラット ファイルにログを記録して、別のプロセスが内部の内容をより簡単に読み取ることができるようにしてください。ファイルのロックに関する問題が少ないデータベースにログを記録することをお勧めします。
サーバー アプリケーションが独自に作成したものではない場合、システム イベント ログに書き込みますか? これは、コンソール ウィンドウよりも簡単に対応できます。
運が良ければ、これでうまくいくかもしれません:
theOriginalProcess | theWatcherProcess.bat
これが theWatcherProcess.bat です
@echo off
rem Wait for output from theOriginalProcess and read it
set /P outputLine=
rem Trigger something else
echo Output from theOriginalProcess detected!
これが機能しない場合、theWatcherProcess.bat は、theOriginalProcess が何らかの方法で協力する必要があります。この投稿でこの問題の詳細な説明と、この投稿で解決方法を読むことができます。
編集:私はあなたの要求を解決するために簡単に変更できる非同期の Tee.bat プログラムの新しいバージョンを開発しました。この投稿でそれを探してください。
あなたが探しているのは aNamed Pipe
または aと呼ばれる"FIFO"
もので、Windows でこれを行う方法がわかりません。私はLinuxで大学で一度だけやりました。リンクはこちらです、頑張ってください
名前付きパイプは、パイプ サーバーと 1 つ以上のパイプ クライアントとの間の通信用の、名前付きの一方向または二重パイプです。
どのプロセスもサーバーとクライアントの両方として機能できるため、ピアツーピア通信が可能になります。ここで使用するパイプ サーバーという用語は、名前付きパイプを作成するプロセスを指し、パイプ クライアントという用語は、名前付きパイプのインスタンスに接続するプロセスを指します。
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365590(v=vs.85).aspx