在C#

时间:2018-12-20 18:01:14

标签: c# windows processstartinfo

如果我在命令窗口中运行此命令,则运行正常,给出了我期望的结果。我首先通过CD FilePath进入 FilePath 。然后运行带有标志的命令,并将输出发送到 DestPath

C:\Program Files (x86)\ProgramName\FileName.exe -f > C:\Temp\Test.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);

关于如何纠正此问题或我可能做错了什么的任何建议?

1 个答案:

答案 0 :(得分:0)

因此,最终,我相信您的问题是试图启动命令提示符并使其进行输出重定向。老实说,我不确定这是否受支持,这也不是C#问题。如果您确实真的想这样做,我建议编写一个小的批处理文件(或者可能是powershell脚本),该文件可以执行所需的操作并获取所需的参数……可能只是输出文件名,然后直接启动它。

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

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

然后您可以直接将输出读取到程序中并对其进行任何操作...可能只是将其写到文件中...但是我强烈怀疑您确实想在内部做一些事情它,并且它实际上根本不需要写入文件中(因为您正在将其写入到临时文件夹中)。