2009-05-07 14 views
37

Qualcuno può dirmi come eseguire un file .bat da uno script PHP?Come si esegue un file .bat da PHP?

ho provato:

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

niente sta funzionando. Ho controllato i manuali PHP e cercato su Google ma non riesco a trovare una buona risposta. Qualcuno sa dove sto andando male?

Sono in esecuzione Windows 2003 Server e sono riuscito a eseguire manualmente il file .bat e fa quello che mi serve; Devo solo poterlo lanciare programmaticamente.

+0

come è il tuo [percorso per file]? – user16208

+0

Per qualche ragione, l'esecuzione di exec ("[filename here] .bat") funziona perfettamente, esegue solo il file. Non c'è bisogno di "cmd/c [nome file qui]". –

risposta

46

Potrebbe essere necessario eseguirlo tramite cmd, ad esempio:

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

Esiste anche una buona documentazione per SYSTEM(): http://us3.php.net/system –

+0

Grazie - ha funzionato. – undefined

+1

come posso restituire i risultati dall'esecuzione del file .bat in PHP in modo da poter recuperare un valore di cui ho bisogno - e questo è solo un affettare una stringa? – undefined

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

Quando è necessario "avviare" per eseguire un batch in cmd? –

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

Cura di commentare il tuo codice? Perché stai proponendo questo se c'è un'altra risposta accettata molto tempo fa con diversi voti? – Yaroslav

+0

questo ha funzionato con grazie –

0

sulla mia macchina Windows 8 computer che esegue IIS 8 posso eseguire il file batch solo mettendo il nome pipistrelli e dimenticatevi del percorso. O mettendo il pip in c: \ windows \ system32 non chiedermi come funziona, ma lo fa. LOL

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

6

Quando si utilizza la funzione exec(), è come se fosse un terminale cmd aperto e si digitino i comandi direttamente su di esso.

Usa virgolette singole come questo $str = exec('start /B Path\to\batch.bat');
Il /B significa la mazza sarà eseguito in background in modo che il resto del php continuerà dopo l'esecuzione di questa linea, al contrario di $str = exec('start /B /C command', $result); cui viene eseguito command e poi result viene conservato per uso successivo.

PS: Funziona sia per Windows che per Linux.
Ulteriori dettagli sono qui http://www.php.net/manual/en/function.exec.php :)

Problemi correlati