Kezdőoldal » Számítástechnika » Programozás » C#-ban hogyan lehet a Windows...

C#-ban hogyan lehet a Windows parancssor "kimenetének" átirányítását megvalósítani?

Figyelt kérdés

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.



2015. ápr. 12. 06:48
 1/1 anonim ***** válasza:

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.

2015. ápr. 13. 22:06
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!