【发布时间】:2012-06-06 21:18:13
【问题描述】:
我正在尝试从 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(它在 shell 中打印状态更新),但该进程不会创建任何输出文件。我尝试调用 Process.cmd 的方式是否有问题,直接从命令行运行时它可以正常工作,但当我尝试从我的 C# 程序调用它时它不能正常工作?
【问题讨论】:
-
可以发一下process.cmd的内容吗?
-
不幸的是我不能(我无权访问它)。不过,我知道 process.cmd 调用了一个处理数据并产生输出的 Java 应用程序。
-
进程是否需要管理员权限才能执行和写入输出?您是否检查过 C# 程序是否以正确的权限运行?
-
如果您正在运行批处理文件,UseShellExecute 不应该为真吗?
-
能贴出生成
Output.txt的代码吗?
标签: c# command-line process