【发布时间】:2015-08-17 02:09:52
【问题描述】:
总有一种方法可以使用 C# 控制台应用程序读取 CMD 输出,就像提到的那样并询问这个线程: How to parse command line output from c#?
但是,我需要的是前一个问题的反之亦然,我想创建一个控制台应用程序(无论是在 C# 中还是在 Vb 中 - 没关系),它将返回一个可由外部程序读取的输出像 cmd.exe。
我希望我能做到这样简单:
class Program
{
static DataTable Main(string[] args)
{
// do some stuff
return myDataTable; //(or String)
}
}
但没有运气。
【问题讨论】:
-
Console.Write/Console.WriteLine和其他Console方法可以让您输出到控制台,但是由于 cmd.exe 是命令行所以它不会“读取” " 任何东西。 -
main()不能返回像DataTable这样的复杂对象(我相信它可以返回void或int)。如果您想要一个可由另一个程序读取的复杂对象的输出,请查看序列化。 -
另存为 XML。很简单。您需要将 DataTable 添加到 Dataset。然后:DataSet ds = new DataSet();数据表 dt = 新数据表(); ds.Tables.Add(dt); ds.WriteXml("文件名", XmlWriteMode.WriteSchema); ds.ReadXml("文件名");
-
具体来说,我使用 4Dv12 作为程序的最终终点。由于 4Dv12 有很多限制,我使用外部脚本(如 vbs 和 cmd)来扩展我的功能。现在,我有一个要集成到某些程序中的项目,尽管我已经有了替代方案和补丁,但我相信最有效的方法是让 c# 完成整个集成,让 4Dv12 赶上它。如果我可以使用 CMD 读取 C# 控制台输出,那么我也可以直接在 4D 中执行此操作。我忘了提到使用 XML 是我最后的手段之一。