2017-10-08 3 views
0

J'ai regardé jusqu'à "comment obtenir la sortie standard de cmd" et j'ai trouvé quelques tutoriels, mais aucun, oui NONE a semblé fonctionner, im essayant de lire toute la sortie qui "cmd. exe "a pour moi.Lecture sortie de cmd obtenir des erreurs

Heres le code entier, défilement vers le bas pour l'emplacement d'erreur

public static string C(string arguments, bool b) 
    { 
     System.Diagnostics.Process process = new 
     System.Diagnostics.Process(); 
     System.Diagnostics.ProcessStartInfo startInfo = new 
     System.Diagnostics.ProcessStartInfo(); 
     startInfo.WindowStyle = 
     System.Diagnostics.ProcessWindowStyle.Hidden; 
     process.StartInfo.RedirectStandardOutput = true; 
     process.StartInfo.RedirectStandardInput = true; 
     process.StartInfo.UseShellExecute = false; 
     startInfo.FileName = "cmd.exe"; 
     startInfo.Arguments = arguments; 
     process.StartInfo = startInfo; 
     process.Start(); 

     string res = ""; 
     if (b) 
     { 
      StringBuilder q = new StringBuilder(); 
      while (!process.HasExited) 
      { 
       q.Append(process.StandardOutput.ReadToEnd()); 
      } 
      string r = q.ToString(); 
      res = r; 
     } 
     if(res == "" || res == null) 
     { 
      return "NO-RESULT"; 
     } 
     return res; 

    } 

Où je reçois mon erreur (System.InvalidOperationException: « StandardOut n'a pas été réorienté ou le processus n'a pas encore commencé. »)

string res = ""; 
    StringBuilder q = new StringBuilder(); 
    while (!process.HasExited) 
    { 
     q.Append(process.StandardOutput.ReadToEnd()); // Right here 
    } 
    string r = q.ToString(); 
    res = r; 
+0

Avez-vous essayé [ce] (https://stackoverflow.com/questions/1145969/processinfo-and-redirectstandardoutput)? –

Répondre

0

vous créez un ProcessStartInfo nommé startInfo, puis définissez des propriétés sur process.StartInfo puis attribuez-lui startInfo-process.StartInfo revenir essentiellement ce que vous définissez pr Évidemment.

Vous devez être mise RedirectStandardOutput, RedirectStandardInput et UseShellExecute sur le startInfo:

System.Diagnostics.Process process = new System.Diagnostics.Process(); 
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); 
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
startInfo.RedirectStandardOutput = true; 
startInfo.RedirectStandardInput = true; 
startInfo.UseShellExecute = false; 
startInfo.FileName = "cmd.exe"; 
startInfo.Arguments = arguments; 
process.StartInfo = startInfo; 
process.Start(); 
+0

Merci! Quelqu'un peut lire mon code mieux que le créateur, Lol. – Doggo123445