6
votes

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

J'utilise le codeur MP3 de ligne de commande boiteux dans un projet. Je veux pouvoir voir quelle version quelqu'un utilise. Si je viens d'exécuter boit.exe sans paramatère, je reçois, par exemple: xxx

si j'essaie de rediriger la sortie dans un fichier texte à l'aide de> dans un fichier texte, le fichier texte est vide. Où est-ce que ce texte accessible est accessible en l'exécutant à l'aide de System.Process en C #?


0 commentaires

4 Réponses :


0
votes

Il pourrait être envoyé à stardr, avez-vous essayé cela?

Découvrez processus.standardError . P>

Essayez-le en utilisant P>

C:\LAME>LAME.exe 2> test.txt


0 commentaires

0
votes

Il utilise probablement STDERR. cmd.exe ne vous permet pas de rediriger stardr et la seule façon dont j'ai déjà redirigé est avec un outil DJGPP.


3 commentaires

Puis-je voir cela en C # à l'aide du système.Process? Je vais regarder cela maintenant merci.


Eh bien, peut-être que je me trompe, ce support.microsoft.com/kb/110930 dit que vous peut rediriger stardr maintenant.


c'est toujours été possible avec cmd



3
votes

Il peut être sorti à STDERR au lieu de stdout. Vous pouvez Rediriger STDRERR en faisant:

LAME.exe 2> textfile.txt


0 commentaires

1
votes
        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);
worked. thanks all!

0 commentaires