如何找出 EXE 或 BAT 文件的实际路径?

ros*_*mcm 4 path batch-file

如果我有一个很长且涉及到的 PATH 并且我输入了一些命令的名称,我如何找出 EXE 或 BAT 文件的实际位置。我认为 TRUENAME 做到了这一点,但它已经从 XP 中消失了,我不确定它是否完全符合我的要求。

所以我希望能够打字

WHEREIS "Obscure Tool.exe"
Run Code Online (Sandbox Code Playgroud)

我得到:

C:\Program Files\Obscure Tools Limited\Obscure Tool\Obscure Tool.exe
Run Code Online (Sandbox Code Playgroud)

当文件夹C:\Program Files\Obscure Tools Limited\Obscure Tool\在我的路径上时。WHEREIS 叫什么,或者可以用批处理文件来完成?

Jde*_*eBP 5

这完全取决于运行的命令解释器,并且没有任何外部实用程序可以在所有情况下正确执行此操作。这是一个非常重要的原因:

不同的命令解释器以不同的方式查找命令。
只有每个单独的命令解释器中内置的命令才能真正知道特定命令名称将调用什么。

  • 对于JP Software 的 TCC,只需使用其内置which命令。这理解 TCC 的别名、可执行扩展和路径搜索算法。
    [c:\]which mspaint 目录
    mspaint 是一个外部的:C:\Windows\system32\mspaint.exe
    dir 是一个内部命令
    [C:\]
  • 对于Korn shell程序,ksh如可用SFUA实用工具包(这在运行的子系统基于UNIX应用程序自带正确的,在与Windows 7旗舰版和Windows Server 2008 R2的框)使用其内置的whence命令。这可以理解 Korn shell 的别名、函数、内置命令等。
    $ 哪里 -v ls
    ls 是 /bin/ls 的跟踪别名
    $
  • 对于Bourne-Again Shell的,bash可用于Unix的应用服务以及在Cygwin中,利用其内置的type命令。这可以理解 Boune-Again shell 的别名、函数、内置命令等。
    $输入'['
    [是一个内置的shell
    $
  • 对于微软的命令解释器,cmd你运气不好。没有内置命令可以执行此操作;尽管可以使用外部命令来复制路径搜索算法,但这些命令不一定(甚至通常)识别别名和内置命令。例如:这是无法识别的 GnuWin32which命令(与上面的 TCC 内置命令相反):dirwhich
    C:\>哪个目录
    其中: (.;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem) 中没有目录
    C:\>
    这是where下面提到的命令grawity以完全相同的方式失败:
    C:\>where 目录
    信息:找不到给定模式的文件。
    C:\>

  • 最近的 Windows 版本带有一个名为“where”的工具(尽管它仍然是一个外部命令)。 (3认同)