Как я получаю текст командной строки, который не отправляется в stdout?

Я использую ХРОМОЙ кодер командной строки mp3 в проекте. Я хочу смочь видеть, какую версию кто-то использует. если я просто выполняю LAME.exe без параматерей, я добираюсь, например:

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

usage: blah blah
blah blah

C:\LAME>

если я пытаюсь перенаправить вывод к использованию текстового файла> к текстовому файлу, текстовый файл пуст. Где этот текст доступен от при выполнении его с помощью Системы. Процесс в c#?

6
задан Dave 5 February 2010 в 17:05
поделиться

4 ответа

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

0
ответ дан 17 December 2019 в 07:04
поделиться

Боюсь, я точно не знаю эквивалент VB, но в C # это будет:

var query = from row in xmlFile.Descendants("row")
            group row by (string) row.Element("usrdefnd5");

Без использования XML-литералов VB будет:

Dim query = From row In document.Descendants("row") _
            Group row By CStr(row.Element("usrdefnd5"))

EDIT: Если вам просто нужны разные ключи, то сработало что-то вроде:

Dim query = From row In document.Descendants("row") _
            Select CStr(row.Element("usrdefnd5")) _
            Distinct
-121--4481912-
        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);

спасибо всем!

1
ответ дан 17 December 2019 в 07:04
поделиться

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

Посмотрите Process.StandardError .

Попробуйте использовать

C:\LAME>LAME.exe 2> test.txt
0
ответ дан 17 December 2019 в 07:04
поделиться

Он может выводиться на стандартный вывод вместо стандартного вывода. Вы можете перенаправить stderr , выполнив:

LAME.exe 2> textfile.txt

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

3
ответ дан 17 December 2019 в 07:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: