2009-05-07 13 views
37

Bir PHP betiğinden bir .bat dosyası nasıl çalıştırılacağını bana söyleyebilir mi?PHP'den bir .bat dosyasını nasıl çalıştırıyorsunuz?

denedim:

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

Hiçbir şey çalışıyor. PHP kılavuzlarını kontrol ettim ve etrafta dolaştım ama iyi bir cevap bulamıyorum. Nerede yanlış gittiğimi bilen var mı?

Windows 2003 Server çalıştırıyorum ve .bat dosyasını başarılı bir şekilde el ile çalıştırıyorum ve ihtiyacım olanı yapar; Sadece programlı olarak başlatabilmem gerek.

+0

[dosya yolu] görünümünüz nasıl? – user16208

+0

Bazı nedenlerden dolayı exec ("[dosyaadı burada] .bat") yapmak mükemmel bir şekilde çalışıyor, sadece dosyayı çalıştırıyor. "Cmd/c [burada dosya adı]" gerek yok. –

cevap

46

Sen cmd aracılığıyla çalıştırmak gerekebilir, örneğin: benim pencerelerde

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

Ayrıca SİSTEM() için bazı harika belgeler de vardır: http://us3.php.net/system –

+0

Teşekkürler - işe yaradı. – undefined

+1

.bat dosyasını .bat dosyasını PHP'den çalıştırmaya nasıl döndürebilirim, böylece ihtiyacım olan bir değeri alabilirim - ve bu sadece bir dizgeyi mi dilimliyor? – undefined

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

cmd cinsinden bir toplu iş çalıştırmak için "başlat" a ihtiyacım var mı? –

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

Kodunuzu yorumlamak ister misiniz? Neden uzun zamandır birçok vardiya ile kabul edilmiş başka bir cevap varsa bunu neden destekliyorsunuz? – Yaroslav

+0

bu çok teşekkür ederim –

0

makinesi 8 makine koşu Ben sadece yarasalar adını koyarak toplu iş dosyasını çalıştırabilirsiniz 8 IIS ve Bunun yolunu unut. Ya da sopayı c: \ windows \ system32 'a koyarak, bana nasıl çalıştığını sormayın ama öyle. LOL

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

6

exec() işlevini kullandığınızda, bir cmd terminalin açık olduğu gibi açık ve komutları doğrudan ona yazıyormuşsunuzdur. Bu $str = exec('start /B Path\to\batch.bat');
/B gibi

Kullanım tek tırnak php geri kalanı o çizgiyi çalıştırdıktan sonra devam edecek, böylece command yürütüldüğünde $str = exec('start /B /C command', $result); aksine ve ardından result için depolanan olarak yarasa, arka planda yürütülecek anlamına gelir daha sonra kullan.

PS: Hem Windows hem de Linux için çalışır.
Daha fazla ayrıntı buradadır http://www.php.net/manual/en/function.exec.php :)

İlgili konular