Как захватить текст командной строки, который не отправляется на стандартный вывод?

StackOverflow https://stackoverflow.com/questions/2208900

  •  18-09-2019
  •  | 
  •  

Вопрос

Я использую mp3-кодер командной строки LAME в проекте.Я хочу иметь возможность видеть, какую версию кто-то использует.если я просто запущу LAME.exe без каких-либо параметров, например:

C:\LAME>LAME.exe
LAME 32-bits version 3.98.2 (http://www.mp3dev.org/)

usage: blah blah
blah blah

C:\LAME>

если я попытаюсь перенаправить вывод в текстовый файл, используя > в текстовый файл, текстовый файл окажется пустым.Откуда этот текст доступен при его запуске с помощью System.Process в С#?

Это было полезно?

Решение

Вероятно, он использует stderr.cmd.exe не позволяет перенаправлять поток stderr, и единственный способ его перенаправления — с помощью инструмента djgpp.

Другие советы

Он может быть выведен на stderr вместо stdout.Ты можешь перенаправить стандартный поток ошибок при выполнении:

LAME.exe 2> textfile.txt

Если это показывает вам информацию, то LAME выводит в стандартный поток ошибок.Если вы напишете оболочку на C#, вы сможете перенаправить стандартная ошибка и выходные потоки из Процессстартинформо.

        System.Diagnostics.Process proc = new System.Diagnostics.Process();
        proc.EnableRaisingEvents = false;
        proc.StartInfo.FileName = @"C:\LAME\LAME.exe";
        proc.StartInfo.RedirectStandardError = true;
        proc.StartInfo.UseShellExecute = false;

        proc.Start();
        string output = proc.StandardError.ReadToEnd();


        proc.WaitForExit();

        MessageBox.Show(output);

работал.Спасибо всем!

Его можно отправить в stderr, вы пробовали это?

Проверить Процесс.StandardError.

Попробуйте это, используя

C:\LAME>LAME.exe 2> test.txt
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top