C# プログラムから .cmd プロセスを実行しようとしています。コマンドラインでプロセスを実行すると、つまり
C:\Directory\Process.cmd -x 1000 -y 1000 C:\Input\input.txt
適切な結果が得られます (この場合、プロセスが次の場所にファイルを書き込むことを意味します)。
C:\Output\output.txt
ただし、単純な C# プログラムからこのプロセスを実行しようとすると、出力ファイルが作成されません。ここに私の試みのいくつかがあります:
試行 1)
try
{
string processName = @"C:\Directory\Process.cmd";
string argString = @" -x 1000 -y 1000 C:\Input\input.txt"; //The extra space in front of the '-x' is here on purpose
Process prs = new Process();
prs.StartInfo.UseShellExecute = false;
prs.StartInfo.RedirectStandardOutput = false;
prs.StartInfo.FileName = processName;
prs.StartInfo.Arguments = argString;
prs.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
prs.Start()
}
catch (Exception e)
{
Console.Writeline(e.Message);
}
試行 2)
try
{
System.Diagnostics.Process.Start(@"C:\\Directory\\Process.cmd", " -x 1000 -y 1000 C:\\Input\\input.txt";
}
catch (Exception e)
{
Console.Writeline(e.message);
}
どちらの場合も、例外はスローされず、Process.cmd にアクセスします (シェルでステータスの更新を出力します) が、プロセスは出力ファイルを作成しません。Process.cmd を呼び出そうとする方法に何か問題がありますか? コマンド ラインから直接実行すると正しく動作しますが、C# プログラムから呼び出そうとすると正しく動作しませんか?