我需要在php脚本中运行.cmd批处理文件。如何在PHP中运行.cmd文件并显示结果
PHP将通过浏览器中经过身份验证的会话进行访问。
当我从服务器的桌面运行.cmd文件时,它将一些输出吐出到cmd.exe。
我想将这个输出路由回php页面。
这是可行的吗?
我需要在php脚本中运行.cmd批处理文件。如何在PHP中运行.cmd文件并显示结果
PHP将通过浏览器中经过身份验证的会话进行访问。
当我从服务器的桌面运行.cmd文件时,它将一些输出吐出到cmd.exe。
我想将这个输出路由回php页面。
这是可行的吗?
是的,它是可行的。您可以使用
exec("mycommand.cmd", &$outputArray);
和打印数组的内容:
echo implode("\n", $outputArray);
$result = `whatever.cmd`;
print $result; // Prints the result of running "whatever.cmd"
您可以使用shell_exec
,或者backticks operator,来启动命令,并得到输出作为一个字符串。
如果要将参数传递给该命令,则应该设想在调用命令之前使用escapeshellargs转义它们;你可能看看escapeshellcmd太^^
使用PHP的popen()函数
我更喜欢使用popen对于这样的任务。特别是对于长时间运行的命令,因为您可以一行一行地提取输出并将其发送给浏览器,所以减少超时的机会。这里有一个例子:
$p = popen('script.cmd', 'r');
if ($p)
{
while (!feof($p))
echo gets($p); // get output line-by-line
pclose($p);
}
[再次添加注释,因为链接是borked]不会在反引号中包含.cmd文件,就像这里的.bat文件的例子一样吗? http://www.php.net/manual/pl/language.operators.execution.php – sigint 2009-07-18 02:39:52