2010-12-07 3 views
0

Я пытаюсь запустить .bat-файл, используя PHP из командной строки. Я использую Windows Vista Home Premium.PHP + Выполнение командной строки

Когда я использую скрипт в файле 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 

If Я копирую его и вставляю в свою командную строку Windows, эта команда выполняется успешно.

Не уверен, что происходит. Любезно помочь.

+1

12 вопросы, 1 принятый ответ. Пожалуйста, прочтите FAQ: http://stackoverflow.com/faq – 2010-12-07 18:25:55

ответ

1

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

cmd /c myfile.bat

(это может быть/к тоже забывают, который выполняет и закрывает)

Кроме того, дубликат How do you run a .bat file from 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"); 
?> 
+0

Я заменил C: \\ Temp \\ foo.bat на C: \\ WINDOWS \\ system32 \\ cmd.exe/k C: \\ Temp \\ foo.bat, но он все равно не выполняется. – 2010-12-07 18:35:13