2

チーム、

これについてあなたの助けをいただければ幸いです。

プロジェクトの背景: abcd.exe などの実行可能ファイルがあります。これは実際には、MS DOS ウィンドウで自分自身を開き、一度起動すると実行を継続する一種のサーバーです。前述のように、これはサーバーであるため、いくつかのログ トレースを記録し続け、DOS ウィンドウに新しい行を 1 つずつ追加し続けます。このサーバーを起動するにはいくつかのパラメーターが必要なので、ここでのパラメーターは、すべての構成の詳細が保存されている構成ファイルのパスです。したがって、このサーバーを起動するには、コマンド プロンプトで指定する必要があります。

*スタート > ファイル名を指定して実行 > CMD

abdc.exe -lookup "C:\MyServer\Bin\designConfig.properties"

手動の手順を避けるために、以下の行でabcd.batなどのバッチファイルを作成しました

"タイトル: 私のサーバー - ノード 1234 (サーバー) "

abdc.exe -lookup "C:\MyServer\Bin\designConfig.properties"

私のマシンと仕様

  • 上記の abdc.exe ファイルは 64 ビット サーバーです。私の OS: Windows 7 64 ビット プラットフォーム: VB Visual Studio 2012 または MS Access VBA

私の要件

これで、VB フォーム、複数行のテキスト ボックスとボタンを作成しました。私が欲しい、

  1. そのボタンをクリックすると、実行可能ファイルまたはバッチ ファイルが検索され、パラメーターを受け入れることで abcd.exe サーバー プログラムが起動されます。(以下のコードを使用してこれで完了です)

=======================

    Dim abc As New Process
    Dim abcinfo As New System.Diagnostics.ProcessStartInfo
    abcinfo.FileName = "C:\ABCD\abdc.bat""
    abcinfo.RedirectStandardOutput = True
    abcinfo.RedirectStandardError = True

    abcinfo.UseShellExecute = False
    abcinfo.ErrorDialog = False

    abc.StartInfo = abcinfo
    abc.Start()
    Dim abclog As System.IO.StreamReader = abc.StandardError
    abc.BeginOutputReadLine()
    TextBox1.Text = abclog.ReadToEnd()
    abc.WaitForExit()

=======================

  1. これにより、実行可能ファイル、つまりサーバーが開きますが、CMD 画面が空白として表示され、テキストボックスの詳細を確認するために閉じました。閉じると、テキストボックスに、閉じたばかりの ABC サーバーの内容が表示されます。コンテンツは取得できますが、現在サーバーが稼働していません!!

  2. したがって、[サーバーの開始]ボタンをクリックすると、(a) exeプログラム、つまりサーバーが起動し、(b) ウィンドウが非表示になります(使用するdosウィンドウはユーザーに表示されず、タスクバーで最小化されるべきではありません) .) (c) その DOS ウィンドウの内容をキャプチャし、フォームのテキスト ボックスに表示します (d) 最も重要なことは、新しいトレースがサーバー画面に記録されるたびに、abc サーバーの内容を更新することです。つまり、DOS 画面に新しい行が追加されます。 .

基本的に、私はこのサーバー インスタンスの複数のインスタンスを持ち、ログをチェックするためにすべてのインスタンスをユーザーに見せたくありません。リストボックスから特定の abc サーバー インスタンスを選択すると、関連する DOS 実行可能ウィンドウのライブ コンテンツがテキスト ボックスに表示されます。

多くのスレッドを検索しましたが、答えが見つかりませんでした。どんな助けでも大歓迎です!!!

PS: このサーバーは C で開発されており、コンソール アプリケーションではないと思います。

ありがとう、プラシャント

4

1 に答える 1

0

申し訳ありませんが、何をしようとしているのかよくわかりませんでしたが、DOS ウィンドウ (=cmd.exe) で出力をリダイレクトする場合は、次のようにします。

your.exe yourparameter1 yourparameter2 >redirect_here.log 2>&1

1 つ目>は sysout をredirect_here.log-file に2>&1リダイレクトし、2 つ目は syserr を同じファイルにリダイレクトします。

redirect_here.log別の DOS ウィンドウで -file に何が書き込まれたかを追跡したい場合は、 tail.exe. 私の記憶が正しければ、Windows リソース キットに がありますが、私はUnxUtilstail.exeにバンドルされているものを使用しています。これは zip パッケージであり、他の便利なツールと共に \usr\local\wbin\ フォルダーにあります。使用方法は次のとおりです。tail.exetail.exe

tail -f redirect_here.log 

-switch は、に表示される新しい行を に表示する-fことを意味します。tail.exeredirect_here.log

于 2012-11-02T11:22:10.567 に答える