当有多个“where”结果时,实际上执行哪个命令?

当有多个“where”结果时,实际上执行哪个命令?

我想知道在(Anaconda)提示符中输入命令时执行的脚本/可执行文件的完整路径。

当我输入

where conda

我得到三个结果

C:\ProgramData\Anaconda3\Library\bin\conda.bat
C:\ProgramData\Anaconda3\Scripts\conda.exe
C:\ProgramData\Anaconda3\condabin\conda.bat

我以为我可以缩小范围

where "$path:conda"

但我得到了相同的结果。

当我运行时,这三个中的哪一个实际上被执行conda list

答案1

路径变量存储系统、程序和/或用户定义的路径

此变量可以被编辑,并且路径可以在安装过程中由程序添加,也可以由用户手动添加,但它本身的目的是方便使用/找到软件组件。

当执行命令时,系统将尝试使用当前文件夹执行该命令,如果不匹配,则它将逐个定义路径并按照分隔符的出现顺序执行;并且会在找到第一个匹配项时立即运行,并且仅运行该匹配项。

通过在当前文件夹和路径变量中定义的所有路径中搜索来查找文件:

where file.ext 

通过搜索路径变量中定义但不在当前文件夹中的所有路径来查找文件:

where $path:file.ext

仅在当前文件夹中搜索而不搜索路径变量来查找文件:

where .:"file.ext"

通过搜索当前文件夹及其所有子文件夹来查找文件:

where /r . "file.ext"

要在文件夹中搜索文件,只需指定:

where ""C:\Folder_001":"File.ext"

仅在两个文件夹(或更多)中搜索文件

Use: 
where ""folder-1";"folder-2";"folder-3";"folder-n":file.ext"

where ""C:\Folder_001";"C:\Folder_002":file.ext"
where ""C:\Folder_001";"C:\Folder_001";"C:\Folder_002";"C:\Folder_003":file.ext"

要通过搜索当前驱动器及其所有子文件夹来查找文件:

where /r \ file.ext

观察:1如果您想要所有扩展名,请删除 .ext

where /r . "file"

观察:2如果文件名称中没有空格和/或特殊字符,则可以不用双引号使用它:

where /r . file

观察:3请不要在文件夹名称末尾使用 \,因为您不喜欢在末尾出现以下字符:

rem :: Dont' Use c:\folder + '\' ==  c:\folder\ 

where /r c:\folder_001\ file.ext

rem :: Use without \
where /r c:\folder_001 file.ext

观察:4可用于查找文件名中定义的文件长度,其中每个?==1字符:

>where c:\windows:??.exe
c:\Windows\hh.exe
c:\Windows\py.exe

>where c:\windows:???.exe
c:\Windows\pyw.exe

>where c:\windows:?????.exe
c:\Windows\bfsvc.exe
c:\Windows\write.exe

>where c:\windows:????????.exe
c:\Windows\explorer.exe
c:\Windows\HelpPane.exe
c:\Windows\splwow64.exe
c:\Windows\winhlp32.exe

相关内容