我的命令是由我的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"
我需要改变什么才能使它从代码中工作?我原以为反斜杠会引起问题,但当手动输入该行时,它们不会。
您的代码将无法工作,因为重定向操作符(>
)不是任何应用程序可用的操作系统元素,而是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