Comment puis-je capturer le texte de ligne de commande qui n'est pas envoyé à stdout?

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

  •  18-09-2019
  •  | 
  •  

Question

J'utilise l'encodeur mp3 de ligne de commande dans un projet BOITEUX. Je veux être en mesure de voir ce que quelqu'un la version utilise. si je lame.exe simplement exécuter sans paramaters je reçois, par exemple:

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

usage: blah blah
blah blah

C:\LAME>

si je tente de rediriger la sortie vers un fichier texte en utilisant> dans un fichier texte, le fichier texte est vide. Où se trouve ce texte lors de l'exécution de accessable à l'aide système.Procédé en c #?

Était-ce utile?

La solution

Il est probablement à l'aide stderr. cmd.exe ne vous permet pas de rediriger stderr, et la seule façon que j'ai jamais réorienté, il est un outil djgpp.

Autres conseils

Il peut être stderr au lieu de sortie de stdout. Vous pouvez stderr en redirect faisant:

LAME.exe 2> textfile.txt

Si cela vous montre des informations, puis est BOITEUX délivrer en sortie le flux d'erreur standard. Si vous écrivez un emballage en C #, vous pouvez rediriger le erreur standards et de sortie 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);

travaillé. merci tous!

Il peut être envoyé à stderr, avez-vous essayé?

Consultez processus .StandardError .

Essayez à l'aide

C:\LAME>LAME.exe 2> test.txt
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top