如何使用PHP打开一个新的CMD窗口

5
在过去的几天里,我尝试用PHP编写代码来弹出一个CMD窗口,并在这个CMD窗口中运行像“ping google.com”这样的命令。我不需要PHP代码来读取结果,我只想要运行它。我已经尝试了一些方法。
<?php     
exec('C:\Windows\System32/cmd.exe ping google.com');     
<?

但没有结果(我不知道它是否在后台运行)。所以我阅读了这个,然后找到了很多方法,但什么都没用。
我的操作系统是Windows,非常感谢您的所有帮助 :)

首先:你的路径是错误的:C:\Windows 应该是 C:\\Windows\\System32,而 System32/cmd.exe 应该是 System32\\cmd.exe。正斜杠在 Windows 上也可以使用,但不要混合使用,保持一致性。另外:PHP 脚本将在哪里运行,你想让提示符出现在哪里? - Elias Van Ootegem
@EliasVanOotegem,你能多解释一下吗? 比如正确的命令是什么? - user3421990
1
我还不能做到,因为这里没有足够的信息... 我不知道你计划如何运行这个PHP脚本,以及你期望看到什么。如果你在你的机器上运行这段代码,只需执行 exec('ping 8.8.8.8'); 就会打开一个cmd窗口,而 exec('start /B ping 8.8.8.8', $status, $result); 则在后台启动进程,让你处理将分配给 $result 的输出,退出代码在 $status 中找到。 - Elias Van Ootegem
从您之前的问题来看,您似乎认为这里的人会为您编写代码。但这不是本网站的宗旨:要么您学会编码,要么您付钱请别人为您完成。这不是一个代码请求网站,而是一个解决问题的问答网站,适用于愿意自己动手解决问题的人。 - Elias Van Ootegem
3个回答

11

答案是
我搜索了很多才找到它 :))

<?
execInBackground('start cmd.exe @cmd /k "ping google.com"');



function execInBackground($cmd) { 
    if (substr(php_uname(), 0, 7) == "Windows"){ 
        pclose(popen("start /B ". $cmd, "r"));  
    } 
    else { 
        exec($cmd . " > /dev/null &");   
    } 
}
?>

popen('start /D "'.getenv("PHPRC").'" /B ' . $exec_string, "r"); 用于设置工作目录,避免 DLL 加载问题。 - IanMcL

0

想要一个真正的命令提示符吗?这是一个允许PHP获取并动态交互真实cmd终端的项目。在这里获取:https://github.com/merlinthemagic/MTS

下载后,您只需使用以下代码:

//if you prefer Powershell, replace 'cmd' with 'powershell'
$shellObj    = \MTS\Factories::getDevices()->getLocalHost()->getShell('cmd');

$strCmd1   = 'ping -n 4 www.google.com';
$return1   = $shellObj->exeCmd($strCmd1);

返回将提供与控制台相同的命令返回或错误。

此外,您可以针对$shellObj发出任何命令,环境在PHP脚本的生命周期内保持不变。因此,不要将命令捆绑在脚本文件中,只需使用exeCmd()方法逐个发出它们,这样您还可以处理返回和任何异常。


0

这很简单,只需要使用shell_exec('ping google.com')命令即可。 如果要打开一个新窗口,可以使用以下命令

shell_exec('start cmd.exe @cmd /k "ping google.com"')

这将打开一个新的提示窗口,您甚至可以输入多个命令

shell_exec('start cmd.exe @cmd /k "ping google.com & ping facebook.com"')

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