我正在尝试将openfiles进程的结果输出到文件但是我没有得到任何结果可以解释为什么?我尝试了两种不同的方式。如果我使用命令提示符并运行相同的过程,它会向我的文件显示结果。
更新:我添加了第三个更改redirectstandardoutput = true的方法 我试过这个,现在我得到一个文件,但没有结果
更新: 我发现在64位系统上执行此操作时将构建选项设置为x86的问题我认为它运行的是32位版本的openfiles。我通过运行我的应用程序并使用RedirectStandardError流进行测试,我本来应该在第一时间做这个:)这就是它所说的“错误:目标系统必须运行32位操作系统。”
//First Method
using (Process proc = new Process())
{
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.FileName = "openfiles";
proc.StartInfo.Arguments = "/query /FO CSV /v > " + "\"" + Application.StartupPath + @"\OpenFiles.log" + "\"";
proc.Start();
}
//Second method
using (Process proc = new Process())
{
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.FileName = "cmd";
proc.StartInfo.Arguments = "/C openfiles /query /FO CSV /v > " + "\"" + Application.StartupPath + @"\OpenFiles.log" + "\"";
proc.Start();
}
//Third method
using (Process proc = new Process())
{
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.FileName = "openfiles";
proc.StartInfo.Arguments = "/query /FO CSV /v";
proc.Start();
string output = proc.StandardOutput.ReadToEnd();
proc.WaitForExit();
if (output != null)
File.WriteAllText(Path.Combine(Application.StartupPath, "OpenFiles.log"), output);
}
答案 0 :(得分:0)
重定向不会像> filename
那样被视为'参数'。
通常,您将捕获应用程序中的输出并自行将其写入文件:
proc.StartInfo.RedirectStandardOutput = true;
proc.Start();
string output = proc.StandardOutput.ReadToEnd();
proc.WaitForExit();
File.WriteAllText(Path.Combine(Application.StartupPath, "OpenFiles.log"), output);