Я использую ХРОМОЙ кодер командной строки 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#?
Вероятно, используется stderr. cmd.exe не позволяет перенаправлять stderr, и единственный способ, которым я когда-либо перенаправлял его, - это инструмент djgpp.
Боюсь, я точно не знаю эквивалент 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);
спасибо всем!
Оно могло быть отправлено на stderr, вы пробовали это?
Посмотрите Process.StandardError .
Попробуйте использовать
C:\LAME>LAME.exe 2> test.txt
Он может выводиться на стандартный вывод вместо стандартного вывода. Вы можете перенаправить stderr , выполнив:
LAME.exe 2> textfile.txt
Если это показывает вам информацию, то LAME выводит в стандартный поток ошибок. Если вы пишете оболочку на C #, вы можете перенаправить стандартную ошибку и выходные потоки из ProcessStartInfo .