Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP中运行.cmd文件并显示结果_Php_Batch File_Cmd_Windows Server 2003 - Fatal编程技术网

如何在PHP中运行.cmd文件并显示结果

如何在PHP中运行.cmd文件并显示结果,php,batch-file,cmd,windows-server-2003,Php,Batch File,Cmd,Windows Server 2003,我需要在php脚本中运行一个.cmd批处理文件 PHP将通过浏览器中经过身份验证的会话进行访问 当我从服务器桌面运行.cmd文件时,它会将一些输出输出到cmd.exe 我想将此输出路由回php页面 这可行吗?是的,可行。你可以用 exec("mycommand.cmd", &$outputArray); 并打印阵列的内容: echo implode("\n", $outputArray); 您可以使用或启动命令并将输出作为字符串 如果要将参数传递给该命令,则应设想在调用该命令之前使用

我需要在php脚本中运行一个.cmd批处理文件

PHP将通过浏览器中经过身份验证的会话进行访问

当我从服务器桌面运行.cmd文件时,它会将一些输出输出到cmd.exe

我想将此输出路由回php页面


这可行吗?

是的,可行。你可以用

exec("mycommand.cmd", &$outputArray);
并打印阵列的内容:

echo implode("\n", $outputArray);

您可以使用或启动命令并将输出作为字符串

如果要将参数传递给该命令,则应设想在调用该命令之前使用转义参数;您也可以看看^^

使用php popen()函数

我更喜欢用于此类任务。特别是对于长时间运行的命令,因为您可以逐行获取输出并将其发送到浏览器,所以超时的可能性较小。下面是一个例子:

$p = popen('script.cmd', 'r');
if ($p)
{
    while (!feof($p))
        echo gets($p);    // get output line-by-line
    pclose($p);
}

[再次添加注释,因为链接被屏蔽]不会在backticks中包含.cmd文件。是否这样做,就像这里的.bat文件示例?像这样的?我现在手边没有PHP,所以无法测试,抱歉@hamlin11-什么不起作用(“打印
ls
;”)?我刚刚测试了它(不过是在linux机器上),它对我来说运行得很好。试试看:只是好奇,cmd文件做什么?运行7zip并做一些文件管理的事情
$p = popen('script.cmd', 'r');
if ($p)
{
    while (!feof($p))
        echo gets($p);    // get output line-by-line
    pclose($p);
}