C#を使って、アプリケーション内からコマンドプロンプトのコマンドを実行する方法を紹介します。
また、コマンドの実行結果の取得方法についても解説したいと思います。
はじめに
C#では、System.Diagnosticsを使って、外部のコマンドプロンプトコマンドを実行できます。
この機能を利用することで、アプリケーション内からシステムコマンドやバッチファイルを実行することが可能です。
本記事では、簡単なフォームアプリに組み込んでコマンドを実行出来るようにしています。
以下のように、コマンドを入力し、ボタンをクリックすることで、コマンドの実行結果を取得することが出来ます。

ソースコード
以下のコードスニペットは、cmd.exeを利用してコマンドプロンプトのコマンドを実行する方法です。
ここでは、フォームアプリのデザインコードについては割愛しています。
フォームアプリのコントロールとしては、テキストボックスとボタン、リッチテキストボックスを使用しています。
using System.Diagnostics;
namespace WinFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// コマンドの実行結果をリッチテキストボックスに出力
richTextBox1.Text = ExecuteCommand(textBox1.Text);
}
private static string ExecuteCommand(string command)
{
// コマンドを実行するためのプロセス情報を設定
ProcessStartInfo processStartInfo = new("cmd.exe", "/c " + command)
{
// 出力をリダイレクト
RedirectStandardOutput = true,
// シェルを使用しない
UseShellExecute = false,
// ウィンドウを作成しない
CreateNoWindow = true
};
// プロセスを開始
Process process = new()
{
StartInfo = processStartInfo
};
process.Start();
// コマンドの実行結果を取得
string output = process.StandardOutput.ReadToEnd();
process.WaitForExit();
return output.Trim();
}
}
}
このコードでは、cmd.exeを起動して、指定したコマンドを実行し、その結果を取得しています。
ProcessStartInfoを使用してコマンド実行の詳細な設定を行い、標準出力をリダイレクトして結果を取得しています。
まとめ
C#を使ってコマンドプロンプトのコマンドを実行することで、外部ツールの操作を簡単にアプリケーションに組み込むことができます。
ProcessStartInfoを駆使することで、実行のカスタマイズが可能になり、アプリケーションの幅が広がります。
リンク
コメント