2013-10-22 131 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”并且不起作用。 –