我正在尝试使用命令行中的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命令行中,则此命令将成功执行。
不确定发生了什么。请帮助。
答案 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");
?>