2009-05-07 104 views
37

¿Alguien puede decirme cómo ejecutar un archivo .bat desde un script PHP?¿Cómo se ejecuta un archivo .bat desde PHP?

que he intentado:

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

Nada está trabajando. Revisé los manuales de PHP y busqué en Google, pero no puedo encontrar una buena respuesta. ¿Alguien sabe dónde me estoy equivocando?

Estoy ejecutando Windows 2003 Server y he ejecutado con éxito manualmente el archivo .bat y hace lo que necesito; Solo necesito poder lanzarlo programáticamente.

+0

¿cómo es tu [ruta al archivo]? – user16208

+0

Por alguna razón, simplemente haciendo exec ("[nombre de archivo aquí] .bat") funciona perfectamente, simplemente ejecuta el archivo. No es necesario "cmd/c [nombre de archivo aquí]". –

Respuesta

46

Puede que sea necesario para ejecutarlo a través de cmd, por ejemplo:

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

También hay una gran documentación para el SISTEMA(): http://us3.php.net/system –

+0

Gracias - eso funcionó. – undefined

+1

¿cómo puedo devolver los resultados de ejecutar el archivo .bat a PHP para que pueda recuperar un valor que necesito, y esto es solo cortar una cadena? – undefined

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

¿Cuándo necesito "iniciar" para ejecutar un lote en cmd? –

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

¿Desea comentar su código? ¿Por qué propones esto si hay otra respuesta aceptada hace mucho tiempo con varios votos ascendentes? – Yaroslav

+0

esto trabajó con gracias –

0

en mis ventanas de la máquina 8 de la máquina que ejecuta IIS 8 que se puede ejecutar el archivo por lotes con sólo poner el nombre murciélagos y Olvidando el camino hacia él. O poniendo el bate en c: \ windows \ system32 no me preguntes cómo funciona, pero lo hace. LOL

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

6

Cuando utiliza la función exec(), es como si tuviera un terminal cmd abierto y está escribiendo comandos directamente en él.

Use comillas simples como este $str = exec('start /B Path\to\batch.bat');
El /B significa el bate se ejecutará en segundo plano para el resto de la php continuará después de ejecutar esa línea, a diferencia de $str = exec('start /B /C command', $result); donde se ejecuta command y luego result se almacena para su uso posterior

PS: Funciona tanto para Windows como para Linux.
Más detalles están aquí http://www.php.net/manual/en/function.exec.php :)

Cuestiones relacionadas