我想調用一個可執行文件(在我的情況下,這是PNGOUT.exe)並從stdout中獲取它的輸出。但事實證明這很棘手 - 應用程序使用某種控制字符來替換之前打印的輸出(進度顯示),而C#類愉快地記錄它們,當我想分析輸出字符串時,我會感到頭疼。 (它甚至過了一段時間我要弄清楚什麼是我的字符串發生)如何處理使用控制字符的控制檯應用程序的輸出?
我打電話可執行與下面的方法:
public static string RunPNGOut(string pngOutPath, string target) {
var process = new Process {
StartInfo = {
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true,
FileName = pngOutPath,
Arguments = '"' + target + '"'
}
};
process.Start();
var result = process.StandardOutput.ReadToEnd();
process.WaitForExit();
return result;
}
我必須要麼使用捕捉文本的唯一最終狀態不同的方法在控制檯中,或者以某種方式擺脫result
中的控制字符(不是簡單地刪除它們,而是「將它們應用」以實現最終外觀)。如何做呢?
控制字符是否被轉義? (例如'\\ t'而不是'\ t')? – keyboardP
如果我只是打印字符串,它看起來只是最終文本,所以我認爲不,它們不會被轉義。 –
如果沒有逃脫,那麼Base64編碼也許?基本上你需要確定你的輸入的性質。 –