【发布时间】:2015-06-05 14:02:42
【问题描述】:
我正在尝试弄清楚如何将一些 cmd 输出拆分为多个字符串,以便以后用于设置标签。
我使用的代码是:
ProcessStartInfo diskdrive = new ProcessStartInfo("wmic", " diskdrive get index, model, interfacetype, size");
diskdrive.UseShellExecute = false;
diskdrive.RedirectStandardOutput = true;
diskdrive.CreateNoWindow = true;
var proc = Process.Start(diskdrive);
string s = proc.StandardOutput.ReadToEnd();
它给出这样的输出:
Index InterfaceType Model Size
2 IDE WesternDigital 1000202273280
1 IDE Seagate 500105249280
0 IDE SAMSUNG SSD 830 Series 128034708480
是否可以将它放在一个列表或数组中,以便我可以获得例如磁盘 2 的大小或磁盘 0 的接口类型。我可以在 C# 中做一些基本的事情,但这超出了我的想象:I
【问题讨论】:
-
您尝试使用
String.Split吗?还是Regex? -
String.Split如果某些单元格有空格(如“SAMSUNG SSD 830 系列”),则会出现问题。 -
这里不会拆分字符串,因为有空格我不知道怎么解决。
-
您可以直接在 c# 中查询 WMI,而不是向外部应用程序获取 WMI 信息。然后您可以直接访问每个数据字段,而无需拆分任何字符串。 C# 中的 WMI 查询是收集有关系统信息的 SQL 查询。例如:
var allPDisks = Session.QueryInstances(@"root\microsoft\windows\storage", "WQL", "SELECT * FROM MSFT_PhysicalDisk")MSFT_PhysicalDisk类提供了您尝试获取的所有字段。见this link -
你需要从事实开始:总会有4列,第一列和最后一列永远是数字;尝试从那里向后工作以解析剩余的列,然后您可以构建您的列表。
标签: c# arrays string list text