¿Cómo capturo el texto de línea de comandos que no se envía a la salida estándar?

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

  •  18-09-2019
  •  | 
  •  

Pregunta

Estoy utilizando el codificador MP3 LAME línea de comandos en un proyecto. Quiero ser capaz de ver lo que alguien está utilizando la versión. si sólo hay que ejecutar lame.exe sin Paramaters me sale, por ejemplo:

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

usage: blah blah
blah blah

C:\LAME>

Si intento redirigir la salida a un archivo de texto usando> a un archivo de texto en el archivo de texto está vacío. ¿Dónde está este texto accesible desde cuando se ejecuta utilizando System.Process en c #?

¿Fue útil?

Solución

Es probable que el uso de stderr. cmd.exe no permite redirigir stderr, y la única manera que he vuelto a dirigir nunca, es una herramienta djgpp.

Otros consejos

Puede ser de salida a stderr en lugar de stdout. Puede redirección stderr haciendo:

LAME.exe 2> textfile.txt

Si esto le muestra información, entonces LAME está emitiendo a la secuencia de error estándar. Si se escribe un envoltorio en C #, puede redirigir la error y de salida flujos estándares de ProcessStartInfo .

        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);

funcionado. gracias a todos!

Podría ser enviada a stderr, has eso?

Proceso .StandardError .

Pruébelo utilizando

C:\LAME>LAME.exe 2> test.txt
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top