查找将在Windows中从命令行执行的程序的路径


128

说我在系统的X.EXE文件夹中安装了一个程序c:\abcd\happy\。该文件夹位于系统路径上。现在,假设系统上还有另一个程序,也称为X.EXE,但安装在folder中c:\windows\

是否可以从命令行快速找出如果我键入X.EXE两个X.EXE将启动哪个?(但无需目录搜索或在任务管理器中查看过程详细信息)。

也许某种内置命令,或者某些可以执行类似操作的程序?:

detect_program_path X.EXE

Answers:


238

使用where命令。列表中的第一个结果是将要执行的结果。

C:\>记事本
C:\ Windows \ System32 \ notepad.exe
C:\ Windows \ notepad.exe

根据此博客文章where.exeWindows Server 2003和更高版本中包含该博客文章,因此,它仅适用于Vista,Win 7等。

在Linux上,等效which命令是,例如which ssh


2
+1!我不知道这可能是Windows的一部分,所以没有朝这个方向看!:)
Zabba

1
贫穷的XP用户有什么等效的选择吗?
shahar_m 2011年

@shahar_m:您是否尝试过以下来自Michael Burr的脚本?它不是内置的,但可以满足您的需求。
克里斯·施米奇

1
@Kenny:假设您知道DLL的名称,则可以使用ListDLLs实用程序(technet.microsoft.com/zh-cn/sysinternals/bb896656)。从命令行运行listdlls -d foo.dll即可查看已加载模块的所有进程以及加载模块的完整路径。或者,您可以只在Windows文件中搜索文件名。
克里斯·施米奇

2
@Kenny:您要的与这里发布的答案有很大不同。您应该使用所做的研究创建一个新的Stack Overflow问题,并在这些评论中发布指向该问题的链接。
克里斯·施密克

10

这是一个小cmd脚本,您可以将n-paste复制到一个名称如下的文件中where.cmd

@echo off
rem - search for the given file in the directories specified by the path, and display the first match
rem
rem    The main ideas for this script were taken from Raymond Chen's blog:
rem
rem         http://blogs.msdn.com/b/oldnewthing/archive/2005/01/20/357225.asp
rem
rem
rem - it'll be nice to at some point extend this so it won't stop on the first match. That'll
rem     help diagnose situations with a conflict of some sort.
rem

setlocal

rem - search the current directory as well as those in the path
set PATHLIST=.;%PATH%
set EXTLIST=%PATHEXT%

if not "%EXTLIST%" == "" goto :extlist_ok
set EXTLIST=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
:extlist_ok

rem - first look for the file as given (not adding extensions)
for %%i in (%1) do if NOT "%%~$PATHLIST:i"=="" echo %%~$PATHLIST:i

rem - now look for the file adding extensions from the EXTLIST
for %%e in (%EXTLIST%) do @for %%i in (%1%%e) do if NOT "%%~$PATHLIST:i"=="" echo %%~$PATHLIST:i

8

正如评论中提到的线程get-command在powershell中也可以解决。例如,您可以键入get-command npm,输出如下:

在此处输入图片说明


(get-command npm).Source将仅以npm的路径(例如)为响应,而不是所有属性的整个表。
大卫·布朗
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.