我需要在任何给定的机器(窗口)上找到php.exe
文件。问题是我不知道在哪里可以找到php.exe
文件,因为路径可能会有所变化。我正在尝试查找 wamp 附带的php.exe
文件。
问题是 wamp 会根据 php 版本更改文件路径。例如,在一个版本上,路径将是:c:/wamp/bin/php5.5.2/php/php.exe
,而在另一个版本上,路径将是c:/wamp/bin/php5.4.1/php/php.exe
我需要一种方法来查找该php.exe
文件的路径,以便我可以使用它并运行 php 文件: c:/wamp/bin/php5.5.2/php/php.exe -f "path/to/my/php/file.php"
我尝试做这样的事情:
cd c:/wamp
dir /S /P php.exe
结果,我得到了文件的文件夹以及更多详细信息,例如文件大小等。但是,我不知道如何只获取所需的信息,位置,并将其用于另一个批处理命令,该命令将对其进行处理。
输出示例(在 C:/XAMPP 中搜索 [这台机器上还没有 WAMP。
驱动器 C 中的卷没有标签。 卷序列号为 1SD-23F
c:''xampp''php 目录
2014/07/24 12:24 65,536 PHP.exe 1 文件 65,536 字节
Total Files Listed: 1 File(s) 65,536 bytes 0 Dir(s) 354,231,255,040 bytes free
正如你所看到的,它告诉我这条路是c:'xampp'php
现在我所要做的就是以某种方式接受它,附加'php.exe -f "path/to/my/file.php"
并完成。
如果只有一个实例/版本的文件
。@echo off
setlocal enableextensions disabledelayedexpansion
for /f "delims=" %%a in ('dir "c:'wamp'php.exe" /a-d /b /s') do set "php=%%a"
echo %php%
"%php%" -f "c:'somewhere'your'file.php"
dir
命令将搜索 php 可执行文件的所有实例。 dir
由循环访问dir
输出的 for
命令执行。对于每一行,将执行 do
子句中的代码。
使用 where
.要从当前目录和PATH
环境变量进行搜索,请执行以下操作:
where php.exe
要搜索特定的目录结构:
where /R c:'wamp php.exe
我后来来的,但纯粹是PHP解决方案
function getPhpPath() {
$pattern = '/php[0-9'.]*/i';
$mainPath = "C:/wamp/bin";
foreach(scandir("C:/wamp/bin") as $dir) {
if(preg_match($pattern, $dir)) {
return $mainPath . '/' . $dir;
}
}
return NULL;
}