由于您可以在 %PATH% 环境变量中放入大量目录,因此应用程序名称之间很容易发生无意冲突。我发誓我以前遇到过这个提示,但我找不到它。有没有办法在命令提示符下查看应用程序所在的目录?例如,我正在寻找以下内容:
C:\> xcopy
Invalid number of parameters
0 File(s) copied
C:\> **SOME_COMMAND** xcopy
C:\Windows\System32\xcopy.exe
答案1
有点重,但如果你喜欢 Windows 中的命令行,你应该尝试一下赛格威。将它的 \bin 文件夹放在您的 PATH 上,您将拥有一大堆出色的工具,尤其是which
,它会准确地告诉您将要执行哪个文件 :)
(是的,我意识到将 PATH 添加到其中以解决过多问题很讽刺)
编辑:这也可能是合适的。
答案2
Where.exe 是 unices 上 whereis 的 Windows 等效版本。如果您使用的是 Windows Server 2003+ 或 Vista+,此工具将安装到 %windir%/System32。在命令 shell (cmd.exe) 中使用“where”会按路径搜索顺序显示结果:
C:\> where where
C:\Windows\System32\where.exe
请记住,PowerShell 通常将“where”别名为 Where-Object,因此您只需要在从 PowerShell 调用 where 时包含“.exe”:
C:\> where.exe where
C:\Windows\System32\where.exe
答案3
这是一个简单的沐浴文件,它可以完成您想要的操作。
@for %%e in (%PATHEXT%) do @for %%i in (%1%%e) do @if NOT "%%~$PATH:i"=="" echo %%~$PATH:i
whereis xcopy - 有效 whereis xcopy.exe - 无效
希望它能有所帮助(有点)
问候
答案4
UNIX GNU 工具在 Windows 端口中可用,您不必像上面那样痛苦地编写脚本。当给定 xcopy 或 xcopy.exe 或其他可执行文件(包括 BAT 文件)时,which 命令有效。这些可以从以下位置下载:
http://gnuwin32.sourceforge.net/packages.html
它们非常方便。