如何在 Windows 中找到可执行文件的位置?

Dav*_*.ca 273 windows

我记得我使用了一个名为 as 的工具where在控制台中查找任何像这样的可执行程序的位置:

 C:\Tmp\Where myTool.exe
 C:\Program Files\MyApp\myTools.exe
 ....
Run Code Online (Sandbox Code Playgroud)

现在我找不到这个工具。不确定 Windows 是否有内置工具来执行该搜索?

Sim*_*n D 511

根据 StackOverflow 的回答,Windows是否有“which”的等价物?,where.exe在 Windows 7 和 Windows Server 2003 及更高版本上执行此操作:

例子

C:\> where ping
Run Code Online (Sandbox Code Playgroud)

输出:

C:\Windows\System32\PING.EXE
Run Code Online (Sandbox Code Playgroud)

在使用的powershell where.exeGet-Command(或它的缩写gcm),作为where为默认别名Where-Object

  • 这个答案的一个重要部分是在 powershell 中,`where` 是 `Where-Object` 的默认别名,因此您需要使用 `where.exe` 或 `gcm`/`Get-Command` (44认同)
  • 这应该被标记为正确答案,因为它无需安装额外的软件即可工作 (24认同)
  • @krv 正如@DaveAndersen 提到的,在powershell 中,您可以输入`Get-Command ping`(或仅输入`gcm ping`),这将为您提供完整路径以及其他一些信息。 (5认同)
  • 什么是powershell。如何在powershell中实现相同的目标? (2认同)
  • @stevec 请阅读以上评论:在 PowerShell 中,您必须使用 `where.exe` 而不是 `where` (2认同)

geo*_*geo 28

编辑: 我应该补充说,如果您不能从命令提示符使用 WHERE 命令,请检查您的 PATH 变量。(只需使用“path”命令。)确保 C:\Windows\System32 在您的路径中。这就是“where.exe”所在的位置。

WHERE 是您要查找的命令!WHERE 就像是 UNIX shell 内置的“which”和“locate”命令之间的交叉,因为它适用于命令可执行文件和常规文件。

它也比这两者中的任何一个都复杂一些,尽管一般来说是一个简单的

WHERE <file>
Run Code Online (Sandbox Code Playgroud)

将工作。

它与“locate”命令的不同之处在于它不查看整个文件系统。相反,默认行为是在两个位置查找文件:

  • 当前目录。
  • PATH 变量中的所有目录。

因此,您可以在不指定目录的情况下直接从命令提示符运行的任何命令,都可以通过 WHERE 命令找到。(因为任何类似的命令已经在 PATH 变量列表中。)

如果你想搜索在命令路径变量,你可以使用:

WHERE "$path:<search text>"
Run Code Online (Sandbox Code Playgroud)

另一方面,如果您想在目录树中查找文件的所有副本,您可以使用:

WHERE /R <Top Level Directory> <search text>
Run Code Online (Sandbox Code Playgroud)

最后, WHERE 将从 PATHEXT 变量中查找带有扩展名的命令和任何文件,但不包括扩展名。所有其他文件必须完全指定或使用通配符指定。

以文件“dxdiag.exe”和“dxdiagn.dll”为例。请注意以下命令及其输出:

WHERE /R C:\Windows dxdiag

C:\Windows\System32\dxdiag.exe
C:\Windows\SysWOW64\dxdiag.exe
C:\Windows\WinSxS\amd64_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_7c8d3f96e7882ec7\dxdiag.exe
C:\Windows\WinSxS\x86_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_206ea4132f2abd91\dxdiag.exe
Run Code Online (Sandbox Code Playgroud)

它成功返回所有版本的“dxdiag.exe”,因为“.exe”是 PATHEXT 变量中的扩展名之一。(注意:“WHERE dxdiag”也可以,因为 C:\Windows\System32 在 PATH 变量中。)

WHERE /R C:\Windows dxdiagn
Run Code Online (Sandbox Code Playgroud)

另一方面,无法返回任何结果,因为“.dll”不在PATHEXT 中。

在这种情况下,看看添加通配符给我们的结果:

WHERE /R C:\Windows dxdiagn*

C:\Windows\System32\dxdiagn.dll
C:\Windows\System32\en-US\dxdiagn.dll.mui
C:\Windows\SysWOW64\dxdiagn.dll
C:\Windows\SysWOW64\en-US\dxdiagn.dll.mui
C:\Windows\WinSxS\amd64_microsoft-windows-d..iagnostic.resources_31bf3856ad364e35_6.2.9200.16384_en-us_daccd04369b09c70\dxdiagn.dll.mui
C:\Windows\WinSxS\amd64_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_7c8d3f96e7882ec7\dxdiagn.dll
C:\Windows\WinSxS\x86_microsoft-windows-d..iagnostic.resources_31bf3856ad364e35_6.2.9200.16384_en-us_7eae34bfb1532b3a\dxdiagn.dll.mui
C:\Windows\WinSxS\x86_microsoft-windows-d..x-directxdiagnostic_31bf3856ad364e35_6.2.9200.16384_none_206ea4132f2abd91\dxdiagn.dll
Run Code Online (Sandbox Code Playgroud)

它成功返回所有版本的 dxdiagn.dll。

有关详细信息,请使用“WHERE /?”。希望这可以帮助!

  • `where where` `C:\Windows\System32\where.exe` :) (3认同)

Joh*_*n T 13

使用dir

cd \
dir /s /b mytool.exe
Run Code Online (Sandbox Code Playgroud)

cd \部分将您更改为驱动器的根目录,以确保搜索从层次结构的顶部开始。

  • 在 PATH 环境变量中查找 **AREN'T** 的可执行文件的唯一方法是执行此操作。他从未指定他的路径,他说**任何可执行文件**。 (9认同)
  • 这会对驱动器进行递归搜索,并且会花费很长时间。 (8认同)

小智 13

请注意,对于 PowerShell,有些事情可能会有所不同:

PS C:\Users\Rob.wb-devel> where ping

PS C:\Users\Rob.wb-devel> where git

PS C:\Users\Rob.wb-devel> whereis.bat git
C:\Program Files (x86)\Git\cmd\git.exe

PS C:\Users\Rob.wb-devel> where.exe git
C:\Program Files (x86)\Git\cmd\git.exe
Run Code Online (Sandbox Code Playgroud)


ste*_*vec 13

对我来说,有效的是

Get-Command chromedriver
Run Code Online (Sandbox Code Playgroud)

返回类似的东西

CommandType     Name                       Version    Source
-----------     ----                       -------    ------
Application     chromedriver.exe           0.0.0.0    C:\WINDOWS\chromedriver.exe
Run Code Online (Sandbox Code Playgroud)

只需替换chromedriver为您正在寻找的程序


Car*_*son 10

打开Powershell并使用gcm命令

gcm [your_exe]

演示

在此处输入图片说明

来源:获取命令