2013-05-21 14 views
6

こんにちは私はC#とバッチファイルに質問があります。私はバッチコマンドを実行して、C#の文字列に出力を保存します。しかし、私はファイルを実行することができますが、このコンテンツを文字列に保存せず、これをテキストボックスに表示します。バッチコマンドをC#で直接実行する方法は?

私のバッチファイル:

オフ@echo "C:\ lmxendutil.exe" -licstatxml -host serv005 -port 6200> C:\ Tempに\ HW_Lic_XML.xmlのメモ帳Cを: \一時\ HW_Lic_XML.xmlここ

である私のC#コード:

private void btnShowLicstate_Click(object sender, EventArgs e) 
{ 
    string command = "'C:\\lmxendutil.exe' -licstatxml -host lwserv005 -port 6200"; 

    txtOutput.Text = ExecuteCommand(command); 
} 

static string ExecuteCommand(string command) 
{ 
    int exitCode; 
    ProcessStartInfo processInfo; 
    Process process; 

    processInfo = new ProcessStartInfo("cmd.exe", "/c " + command); 
    processInfo.CreateNoWindow = true; 
    processInfo.UseShellExecute = false; 
    // *** Redirect the output *** 
    processInfo.RedirectStandardError = true; 
    processInfo.RedirectStandardOutput = true; 

    process = Process.Start(processInfo); 
    process.WaitForExit(); 

    // *** Read the streams *** 
    string output = process.StandardOutput.ReadToEnd(); 
    string error = process.StandardError.ReadToEnd(); 

    exitCode = process.ExitCode; 

    process.Close(); 

    return output; 
} 

私は出力をしたい、私はこれを行うことができます私はバッチファイルを持っていないしたい。私はこのbatvchcommandをCで直接実行したいと思っています#...私はこれを行うことはできますか?

+0

http://stackoverflow.com/questions/5519328/executing-batch-file-in-c-sharp – Rahul

+0

私の更新を見て... – Tarasov

答えて

5

"CMD.exe"を使用してコマンドラインアプリケーションを実行したり、出力を取得したりする必要はありません。直接「lmxendutil.exe」を使用できます。

これを試してみてください:

processInfo = new ProcessStartInfo(); 
processInfo.FileName = "C:\\lmxendutil.exe"; 
processInfo.Arguments = "-licstatxml -host serv005 -port 6200"; 
//etc... 

が "コマンド" を使用するように修正を行います。

こちらがお役に立てば幸いです。

2

バッチファイルが出力を生成するようには思われません。コマンドラインで実行すると、出力が表示されますか?あなたはリダイレクト>演算子をbatファイル行に持っているので、xmlファイルに出力を送信しているようです。

出力をxmlファイルに保存した場合は、プロセスが終了したらすぐにC#を使用して出力する必要があります。

+0

私の更新を見て...私のコマンドでそれは動作しません私はテストを取得エコーテストで – Tarasov

関連する問題