我的命令是由我的c#代码产生的,在c#中不工作,但当我把它粘贴到cmd时,它可以完美地工作

本文关键字:我的 工作 命令 cmd 完美 代码 | 更新日期: 2023-09-27 18:10:52

我想用一行来获取windows更新信息,这是wmic的一部分。

我的代码是这样的:

Process p = new Process();
string arguments = "qfe list full /format:htable > "+ path;
ProcessStartInfo procStartInfo = new ProcessStartInfo("wmic", arguments);
procStartInfo.CreateNoWindow = true;
procStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
procStartInfo.UseShellExecute = false;
p.StartInfo = procStartInfo;
p.Start();

while path是转储文件的有效位置,当然以hotfixlog.htm结尾。

问题是,什么也没发生。然而,当我从参数变量中获取最终产品,并手动将其粘贴到cmd中,并使用'wmic <变量内容>'它工作得很好,我最终得到了我期望的。htm。

创建的行看起来像这样:

"qfe list full/format:htable> c:' users '……'WindowsHotfixes.htm"

我需要改变什么才能使它从代码中工作?我原以为反斜杠会引起问题,但当手动输入该行时,它们不会。

我的命令是由我的c#代码产生的,在c#中不工作,但当我把它粘贴到cmd时,它可以完美地工作

您的代码将无法工作,因为重定向操作符(>)不是任何应用程序可用的操作系统元素,而是cmd.exe中的操作符。它在命令行中工作,因为cmd正在处理它,但wmic不知道如何处理它。

如果您的命令行类似于

,则可以使用重定向
cmd /c"wmic qfe list full /format:htable > x:'somewhere'file.htm"

或者您可以删除重定向并向wmic指示您希望将数据保存在文件

wmic /output:"x:'somewhere'file.htm" qfe list full /format:htable