在CMD中查找文件位置并使用它


Find file location in CMD and use it

我需要在任何给定的机器(窗口)上找到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;
}