PHP + Выполнение командной строки - PullRequest
0 голосов
/ 07 декабря 2010

Я пытаюсь запустить файл .bat с помощью PHP из командной строки. Я использую 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 Ответ

1 голос
/ 07 декабря 2010

Это потому, что bat-файл - это список команд в очереди для приглашения. Попробуйте следующее:

cmd /c myfile.bat

(это может быть также / k, забудьте, что выполняется и закрывается)

Кроме того, дубликат Как запустить файл .bat из PHP?

EDIT

<?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");
?>
...