2013-10-22 173 views
0

PHP可以在Windows命令行上執行順序命令嗎?PHP使用Windows命令行執行順序命令

例如,我想改變目錄然後運行一個.exe文件。

我一直在試圖做這個使用exec()和shell_exec()兩個不同的調用。也許我應該試圖在同一個函數調用中運行這兩個命令?

我正在使用Windows 8 Pro(在管理員模式下)。 PHP 5.2.5 - WAMP安裝的一部分。

我一直在嘗試不同的排列組合(帶引號,雙引號,雙反斜線等):

$sExec='c:\Program Files\TileMill-v0.10.2-pre\tilemill node index.js export white_block ~\Documents\MapBox\export\white_block_13_'.$iI.'.mbtiles --minzoom=13 --maxzoom=13' 
exec ($sExec); 

編輯:也許這是用PHP exec()和Windows 8的一個問題運行節點?

+0

爲什麼改變目錄。你不能用完整路徑調用.exe文件嗎? 'exec('C:\ DOS \ RUN \ run.exe')' – 2013-10-22 20:13:47

+0

這可能是一個權限或語法問題,但我無法讓我的命令行可執行文件正常運行該方法。我正在嘗試運行TileMill導出。 –

+0

如何張貼您嘗試的確切代碼 – 2013-10-22 20:17:44

回答

0

您可以使用chdir命令更改爲您要運行exe的目錄。

或者,考慮製作一個批處理文件cd s到正確的目錄並運行它,然後使用PHP來運行該.bat文件。你可能會有更多的運氣以這種方式執行順序命令。

+0

這是一個體面的想法。我忘了提到第二個命令的一部分是可變的(我每次都導出到不同的文件名) - 所以這意味着我需要在每次調用之前重寫bat文件。我更喜歡更簡單/更快的解決方案。 –

+0

或者讓批處理文件獲取參數?然後你可以傳遞你想要的文件名。 –

+0

我創建了以下bat文件:cd \ Program Files \ TileMill-v0.10.2-pre \ tilemill node index.js export black_block f:\ mbtile \ black_block_13_xt.mbtiles --minzoom = 13 --maxzoom = 13 When我在其工作的命令行上運行generate.bat文件。但是當我用exec調用它(「generate.bat」)時,它返回「mbtiles」並且不起作用。 –