Запустите команду DOS с параметрами в C # - PullRequest
0 голосов
/ 20 декабря 2018

Если я запускаю эту команду в командном окне, она работает нормально, давая ожидаемые результаты.Сначала я захожу на FilePath через CD 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 голосов
/ 21 декабря 2018

Итак, в конечном счете, я считаю, что ваша проблема заключается в попытке запустить командную строку и заставить ее выполнить перенаправление вывода.Я, честно говоря, не уверен, что это поддерживается, и это не вопрос C #.Если вы действительно хотите сделать это таким образом, я рекомендую написать небольшой пакетный файл (или, возможно, скрипт powershell), который делает то, что вы хотите, и принимает параметры, которые вам нужны ... возможно, только выходное имя файла, а затем запустите его напрямую.

Тем не менее, позвольте мне порекомендовать, пожалуйста, вместо этого использовать перенаправление вывода, встроенное в класс процесса:

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

Затем вы можете прочитать вывод напрямуюв вашу программу и делайте с ней все, что вы хотите ... что может быть просто записать это в файл ... но я сильно подозреваю, что вы действительно хотите сделать что-то для нее внутренне и что на самом деле это никогда не нужно записыватьв любом случае в файл (поскольку вы записываете его во временную папку).

...