【问题标题】:PHP executing sequential commands with windows command linePHP用windows命令行执行顺序命令
【发布时间】:2013-10-23 06:31:56
【问题描述】:

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 运行 Node 的问题?

【问题讨论】:

  • 为什么要更改目录。你不能用完整路径调用 .exe 吗? exec('C:\DOS\RUN\run.exe')
  • 这可能是权限或语法问题,但我无法使用该方法使我的命令行可执行文件正常运行。我正在尝试运行 TileMill 导出。
  • 如何发布您尝试过的确切代码

标签: php node.js windows-8


【解决方案1】:

您可以使用chdir 命令切换到您希望从中运行 exe 的目录。

或者,考虑将cds 的批处理文件创建到正确的目录并运行它,然后使用 PHP 运行该 .bat 文件。以这种方式执行顺序命令可能会更幸运。

【讨论】:

  • 这是个好主意。我忘了提到第二个命令的一部分是可变的(我每次都导出到不同的文件名) - 所以这意味着我需要在每次调用之前重写 bat 文件。我更喜欢更简单/更快的解决方案。
  • 或者批处理文件带参数?然后你可以将你想要使用的文件名传递给它。
  • 我创建了以下 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 当我在命令行运行 generate.bat 文件时,它可以工作。但是当我使用 php 和 exec("generate.bat"); 调用它时它返回“mbtiles”并且不起作用。
  • 让 php 运行 .bat 文件的最佳方法是什么?
  • 我可以运行 bat 文件。但问题是,当我在 PHP 中运行它时,它的行为与我直接在命令行中运行时不同(失败)。它成功更改了目录,但是当它尝试使用 TileMill 导出时,它返回一个神秘的“mbtiles”消息,这对我来说毫无意义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-23
  • 1970-01-01
  • 1970-01-01
  • 2011-09-15
  • 2019-08-19
  • 2020-04-30
相关资源
最近更新 更多