"C:\wmic" 无法识别为内部或外部命令,可执行程序或批处理文件。

9
我希望能够通过 PHP 在浏览器中显示 CPU 负载百分比。 这是我正在使用的代码:
$command ="C:\\wmic cpu get loadpercentage"; 
echo shell_exec("$command 2>&1 ; echo $?" );

这是输出结果:
'C:\wmic' is not recognized as an internal or external command, operable program or batch file.

我错过了什么?

更新 - 1

更改代码以允许单词之间有空格: $command ="C:\\wmic^ cpu^ get^ loadpercentage";

'C:\wmic cpu get loadpercentage' is not recognized as an internal or external command, operable program or batch file.

现在正在读取整个代码行,不仅仅是'C:\wmic'。

2
文件扩展名可能是什么? - Marc Giroux
wmic是什么?它是一个可执行文件(可能被称为wmic.exe)吗?还是批处理文件(可能被称为wmic.bat)?还是其他什么东西?你确定它就在C:\里面吗? - Chris
如果我在命令提示符中运行:C:\>wmic cpu get loadpercentage,我会得到以下结果:LoadPercentage 6 - IgorAlves
这是一种错误,当环境系统变量不适用于我们尝试通过shell_exec()调用的程序时会出现。但是,即使我尝试调用. $command ="C:\\php^ -v";并将php.exe放置在我的系统变量中,我仍然遇到相同的错误。它在命令行中可以工作。 - IgorAlves
@zwitterion,这是因为你在Windows上使用了Unix风格的shell概念。你想要得到什么输出? - Chris
显示剩余6条评论
4个回答

7

您有两个问题,这两个问题我们在上面的评论中都已经探讨过:

  1. The actual WMIC binary is located at C:\Windows\System32\wbem\WMIC.exe, not C:\wmic. That path needs to be used in your PHP command.

  2. You are trying to use Unix-style shell concepts (redirecting STDERR to STDOUT, chaining commands with ;, and using echo and $?) on a Windows system.

    Simply running the command without all that stuff should work:

    echo shell_exec("C:\\Windows\\System32\\wbem\\WMIC.exe cpu get loadpercentage");
    

6

设置路径:Windows+Pausebreak > 高级系统设置 > 环境变量 > 系统变量 > 路径 > 编辑C:\Windows\System32\wbem

或者

进入路径:C:\Windows\System32\wbem > wbemtest 并连接,然后退出。


0

对于 Windows 和 JavaScript,请将 wbem 文件夹的位置添加到路径变量中


-1

这个简单的编辑%PATH%环境变量,对我很有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接