DOSコマンドを実行して結果を得る

System.Diagnostics.Process クラスを利用します。
例ではipconfigコマンドを実行し、その結果を文字列で取得しています。

追記:
fcコマンドでファイルの比較をこの方法で行おうとしたのですが
どうしてもうまくいきませんでした。。。orz
うまくいった方は方法を教えて頂けると参考になります。

>2011.11.01 追記
Hiroさんより掲示板にて情報を頂きました。

UseShellExecute = true;
に設定することで解決できるそうです。

参考:Executing file compare process from C#

http://www.dotnet247.com/247reference/msgs/21/107593.aspx

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process pro = new System.Diagnostics.Process();

            pro.StartInfo.FileName = "ipconfig";            // コマンド名
            pro.StartInfo.Arguments = "/all";               // 引数
            pro.StartInfo.CreateNoWindow = true;            // DOSプロンプトの黒い画面を非表示
            pro.StartInfo.UseShellExecute = false;          // プロセスを新しいウィンドウで起動するか否か
            pro.StartInfo.RedirectStandardOutput = true;    // 標準出力をリダイレクトして取得したい

            pro.Start();

            string output = pro.StandardOutput.ReadToEnd();
            output.Replace("\r\r\n", "\n"); // 改行コード変換

            MessageBox.Show(output);
        }
    }
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)