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

Find file location in CMD and use it

我需要在任何给定的机器 (windows) 上找到 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。]):

Volume in drive C has no label. Volume Serial Number is 1SD-23F

Directory of c:\xampp\php

07/24/2014 12:24 AM 65,536 php.exe 1 File(s) 65,536 bytes

 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" 并完成。

如果文件只有一个instance/version

@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;
}