PHP +命令行执行

时间:2010-12-07 18:24:13

标签: php command-line exec

我正在尝试使用命令行中的PHP运行.bat文件。我正在使用Windows Vista Home Premium。

当我在像ipconfig.exe这样的文件上使用脚本时,我得到了输出。但是,当我运行.bat文件时,它会输出文件中的内容但不执行它。

以下是什么,并给我输出:

$runCommand = "C:\\WINDOWS\\system32\\ipconfig.exe";
$WshShell = new COM("WScript.Shell");
$output = $WshShell->Exec($runCommand)->StdOut->ReadAll;
echo "<p>$output</p>";

但这不是:

$runCommand = "C:\\Temp\\foo.bat";
$WshShell = new COM("WScript.Shell");
$output = $WshShell->Exec($runCommand)->StdOut->ReadAll;
echo "<p>$output</p>";

这是我的foo.bat文件中的内容:

C:/windows/system32/schtasks.exe /create /tn "TestTask" /tr "C:/Temp/configure.php" /sc minute /st 08:00:00

如果我将其复制并粘贴到我的Windows命令行中,则此命令将成功执行。

不确定发生了什么。请帮助。

1 个答案:

答案 0 :(得分:1)

这是因为bat文件是提示命令的排队列表。请尝试以下方法:

cmd /c myfile.bat

(也可能是/ k,忘记执行和关闭哪个)

此外,还有How do you run a .bat file from PHP?

的副本

修改

<?php
  // http://www.php.net/manual/en/function.exec.php#85930

  $_ = null;

  // If you care about the return value, use this:
    passthru("C:\\WINDOWS\\system32\\cmd.exe /c custom.bat",$_);
    header('Content-Type: text/plain');
    echo $_;
  // if you don't care, just use this:
    $_ = exec("C:\\WINDOWS\\system32\\cmd.exe /c custom.bat");
?>