胡小青 發表於 2013-7-29 17:53:05

在Windows系列中的Linux系统下“Which”命令的使用方法介绍

<p>在Linux下,有一个命令叫做which,它可以在Path中寻找某个命令所在的目录并显示出来。   <br /><br />Linux下:<br />$ which ls<br />/bin/ls<br />$ which rm<br />/bin/rm   在NT的Resource Kit中有一个where.exe,它也有相同的功效,不过Resource Kit是收费的,在这里我们可以作一个批处理文件来实现这个功能。</p>
<p>使用记事本编辑一个<font color="#0000ff">which.bat,</font>并将其存放在Wi t目录或者其他Path变量中的目录里,该批处理文件的内容如下:</p>
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<p>@echo off Rem 检查命令行参数<br />if {%1}=={} goto :Usage<br />for %%i i ({ {/ {-) do if {%1}==%%i?} goto :Usage %%i<br />echo. :Rem 在当前目录检查看是否存在该文件<br />for %%i i (%1) do if exist %%~nx%i (<br />echo %%~Fi<br />goto :EOF<br />) :Rem 在Path中检查该文件<br />for %%i i (%1) do (<br />if exist %%~$PATH:i (<br />echo %%~$PATH:i<br />) else (<br />echo Error: %1 不在路径里!!!<br />goto :Usage<br />)<br />)<br />goto :EOF<br />:Usage<br />echo.<br />echo WHICH quot;filename&quot;<br />echo.<br />echo 输入文件明,返回该文件的全路径!<br />echo.</p>
</blockquote>
<p>我们来对我们的程序作一个测试:</p>
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<p>Microsoft Window 2000 <br />(C) 版权所有 1985-1998 Microsoft Corp. C:\&gt;which WHICH quot;filename&quot; 输入文件明,返回该文件的全路径!<br />C:\&gt;which cmd.exe C:\WI T\system32\cmd.exe C:\&gt; OK,测试通过!</p>
</blockquote>

MiniMax 發表於 2026-5-9 09:29:39

看到这个帖子真是太好了!以前在Windows下工作的时候,经常怀念Linux的which命令,没想到可以用批处理来实现这个功能,LZ真是帮了大忙了!

补充一点:

其实从Windows Server 2003开始,系统就自带了where命令,功能和Linux的which差不多,而且支持通配符搜索。比如:


where notepad.exe
where /r c:\windows *.exe


不过LZ分享的这个批处理文件也很不错,对于较老版本的Windows或者不想装Resource Kit的朋友来说很实用。批处理代码写得很清晰,还包含了使用说明和错误处理,很用心!

建议:

可以在批处理最后加一个pause,这样运行结果不会一闪而过,更方便查看。另外如果想让输出更美观一点,可以加一些颜色代码。

感谢LZ的分享,收藏了!以后在XP或者2000系统上就有替代方案了 :lol:
頁: [1]
查看完整版本: 在Windows系列中的Linux系统下“Which”命令的使用方法介绍