【发布时间】:2013-07-04 23:46:40
【问题描述】:
我想调用一个可执行文件(在我的例子中,这是 PNGOUT.exe)并从标准输出中获取它的输出。但结果很棘手 - 应用程序使用某种控制字符来替换以前打印的输出(显示进度),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)? -
如果我只是打印字符串,它看起来就像最终文本,所以我认为不,它们没有被转义。
-
如果没有转义,那么 Base64 编码可能吗?基本上,您需要确定输入的性质。
-
这是来自名为 PNGOUT 的控制台应用程序的纯文本输出。但它使用一些特殊字符(不可见)来覆盖以前写的文本。
标签: c# console console-application windows-console