トップページに戻る
次のC#のサンプルへ
前のC#のサンプルへ
7-12 exeを実行し、実行結果をテキストファイルに出力
C#のサンプル
exeのフルパスを複数指定して、
更新日時が最新のexeを実行し、実行結果をテキストファイルに出力するツールです。
Printfデバッグする時に使います。
英語名称は、WriteOutToText
ソース
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
// 対象exeのフルパスリスト
static List<string> mExeFullPathList =
new List<string>() { @"exeのフルパスその1",
@"exeのフルパスその2"};
private const string PathEmEditor = @"C:\Program Files\EmEditor\EmEditor.exe"; // EmEditor
static void Main()
{
var Query = mExeFullPathList.OrderByDescending(
pX => System.IO.File.GetLastWriteTime(pX));
// exeの更新日時の新しいほうを実行
string ExecExeFullpath = Query.First();
var InsProcessStartInfo = new System.Diagnostics.ProcessStartInfo();
InsProcessStartInfo.FileName = ExecExeFullpath; // 実行するファイル
InsProcessStartInfo.CreateNoWindow = true; // コンソール・ウィンドウを開かない
InsProcessStartInfo.UseShellExecute = false; // シェル機能を使用しない
InsProcessStartInfo.RedirectStandardOutput = true; // 標準出力をリダイレクト
// Exeの実行開始
System.Diagnostics.Process InsProcess = System.Diagnostics.Process.Start(InsProcessStartInfo);
string RedirectStr = InsProcess.StandardOutput.ReadToEnd(); // 標準出力の読み取り
WriteTextAndOpen(RedirectStr);
}
// String型を引数として、テキストファイルに出力して開く
static void WriteTextAndOpen(string pRedirectStr)
{
string FileName = DateTime.Now.ToString("yyyy年MM月dd日HH時mm分ss秒") + ".txt";
string OutFilePath = System.IO.Path.Combine(getWorkFolder(), FileName);
System.Text.Encoding enc = new System.Text.UTF8Encoding(false);
System.IO.File.WriteAllText(OutFilePath, pRedirectStr, enc);
var InsProcessStartInfo = new System.Diagnostics.ProcessStartInfo();
InsProcessStartInfo.FileName = PathEmEditor;
InsProcessStartInfo.Arguments = OutFilePath + " /cp 65001"; // UTF8を指定
InsProcessStartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Maximized;
System.Diagnostics.Process.Start(InsProcessStartInfo);
}
// Dドライブが無かったらCドライブを使う
static private string getWorkFolder()
{
return System.IO.Directory.Exists(@"D:\WorkFile\") ? @"D:\WorkFile\" : @"C:\WorkFile\";
}
}