C#-ban hogyan lehet a Windows parancssor "kimenetének" átirányítását megvalósítani?
Igazából a kódolással van problémám. Van egy ilyen kódom:
private static string SendCMD(string cmd)
{
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo("cmd", "/u /c " + cmd);
psi.UseShellExecute = false;
psi.RedirectStandardOutput = true;
psi.CreateNoWindow = true;
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = psi;
proc.Start();
string ret = "";
char[] buffer = new char[2048];
int bytesRead;
while ((bytesRead = proc.StandardOutput.Read(buffer, 0, buffer.Length)) > 0)
{
ret = ret + new string(buffer.Take(bytesRead).ToArray());
Thread.Sleep(10);
}
return ret;
}
Ilyenkor a "help" parancsra megkapom azt, amit egy sima parancssorban kapnék. Ám például egy "dir" parancsra egy rosszul dekódolt szöveget kapok tele kérdőjelekkel és szóközökkel. Kipróbáltam már minden "StandardOutputEncoding"-ot, de vagy az egyik működik, vagy a másik.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Nem kell túlbonyolítani.
string output = "";
while(!proc.StandardOutput.EndOfStream){
output += proc.StandardOutput.ReadLine() + "\n";
}
ez a konzolablak tartalmát beletolja neked az output változóba, ráadásul tényleges soronként tördelve, ha az nem kell akkor kiveszed a \n-t onnan, a kódolási hiba pedig valószínűleg a buffer miatt lehet, de pontosan nem tudom az okát.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!