我记得我使用了一个名为 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.exe,Get-Command(或它的缩写gcm),作为where为默认别名Where-Object。
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”命令的不同之处在于它不查看整个文件系统。相反,默认行为是在两个位置查找文件:
因此,您可以在不指定目录的情况下直接从命令提示符运行的任何命令,都可以通过 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 /?”。希望这可以帮助!
Joh*_*n T 13
使用dir:
cd \
dir /s /b mytool.exe
Run Code Online (Sandbox Code Playgroud)
该cd \部分将您更改为驱动器的根目录,以确保搜索从层次结构的顶部开始。
小智 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为您正在寻找的程序