用C#中的参数运行DOS命令



如果我在命令窗口中运行此命令,它会运行良好,并给出我期望的结果。我首先通过CD FilePath转到文件路径。然后运行带有标志的命令,并将输出发送到DestPath

C:Program Files (x86)ProgramNameFileName.exe -f > C:TempTest.txt

但是,它不是通过以下过程运行的。我浏览了很多论坛,尝试了很多解决方案,但都没有奏效。

public const string FilePath = @"C:\Program Files (x86)\ProgramName\FileName.exe";
public const string DestPath = @"C:\Temp\Test.txt";
public static void GetResults()
{
ProcessStartInfo process = new ProcessStartInfo
{
UseShellExecute = true,
CreateNoWindow = false,
FileName = @"cmd",
};
string Command = @"/c " + FilePath + " -f > " + DestPath;
process.Arguments = Command;
process.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(process);
Thread.Sleep(2000);

关于如何纠正这个问题,或者我可能做错了什么,有什么建议吗?

所以,最终,我认为您的问题是尝试启动命令提示符并让它执行输出重定向。老实说,我不确定这是否得到支持,这也不是一个C#问题。如果你真的想这样做,我建议你写一个小批量文件(或者可能是一个powershell脚本),它可以做你想要的事情,并获取你需要的参数。。。可能只有输出文件名,然后直接启动。

也就是说,请允许我建议您使用内置在流程类中的输出重定向:

https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.processstartinfo.redirectstandardoutput?view=netframework-4.7.2

然后,您可以直接将输出读取到程序中,并对其执行任何操作……这可能只是将其写入一个文件。。。但我强烈怀疑你真的想在内部对它做点什么,而且它实际上根本不需要写到文件中(因为你要把它写到临时文件夹中)。

最新更新