2009-05-07 10 views
37

Kann mir jemand sagen, wie man eine .bat-Datei aus einem PHP-Skript ausführt?Wie führen Sie eine .bat-Datei aus PHP?

Ich habe versucht:

exec("C:\[path to file]"); 
system("C:\[path to file]"); 

Nichts funktioniert. Ich habe die PHP-Handbücher überprüft und gegoogelt, kann aber keine gute Antwort finden. Wer weiß, wo ich falsch liege?

Ich verwende Windows 2003 Server und habe die .bat-Datei erfolgreich manuell ausgeführt und es tut, was ich brauche; Ich muss es nur programmatisch starten können.

+0

Wie sieht Ihr [Pfad zur Datei] aus? – user16208

+0

Aus irgendeinem Grund funktioniert nur exec ("[filename here] .bat") perfekt, es wird nur die Datei ausgeführt. Keine Notwendigkeit für "cmd/c [Dateiname hier]". –

Antwort

46

Möglicherweise müssen sie über cmd laufen, zB:

system("cmd /c C:[path to file]"); 
+0

Es gibt auch eine großartige Dokumentation für das SYSTEM(): http://us3.php.net/system –

+0

Danke - das hat funktioniert. – undefined

+1

Wie kann ich die Ergebnisse aus dem Ausführen der .bat-Datei an PHP zurückgeben, so dass ich einen Wert abrufen kann, den ich brauche - und schneidet das nur eine Zeichenfolge? – undefined

9
<?php 
exec('c:\WINDOWS\system32\cmd.exe /c START C:\Program Files\VideoLAN\VLC\vlc.bat'); 
?> 
+0

Wann muss ich "starten", um einen Batch in cmd auszuführen? –

5
<?php 
pclose(popen("start /B test.bat", "r")); die(); 
?> 
+0

Möchten Sie Ihren Code kommentieren? Warum propagst du das, wenn es vor langer Zeit eine andere akzeptierte Antwort mit mehreren Upvotes gibt? – Yaroslav

+0

dies arbeitete mit Dankeschön –

0

auf meinem Windows-Rechner 8 Maschine mit IIS 8 Ich kann die Batchdatei nur durch den Fledermäusen Namen setzen und vergiss den Weg dahin. Oder indem Sie den Schläger in c: \ windows \ system32 setzen fragen Sie mich nicht, wie es funktioniert, aber es tut. LOL

$ test = shell_exec ("C: \ windows \ system32 \ cmd.exe/c $ streamnumX.bat");

6

Wenn Sie die exec() Funktion verwenden, ist es so, als ob Sie ein cmd Terminal geöffnet haben und Befehle direkt eingeben.

Benutzen Sie ähnliche $str = exec('start /B Path\to\batch.bat');
The /B bedeuten, dass die Fledermaus im Hintergrund ausgeführt wird, so dass der Rest des php diese Zeile nach dem Ausführen fortsetzen wird, im Gegensatz zu $str = exec('start /B /C command', $result); wo command ausgeführt wird, und dann wird result gelagert später verwenden.

PS: Es funktioniert für Windows und Linux.
Weitere Details sind hier http://www.php.net/manual/en/function.exec.php :)

Verwandte Themen