本帖最后由 老伙计 于 2018-8-10 18:35 编辑
第一次发帖,献丑了。
最近突然对 Windows 下的脚本编程很感兴趣, 于是,就动手编了一个作用类似于 Linux 系统 which 命令的程序, 文件名字叫 which.cmd,内容很简单,只有区区的几十行代码,功能是按照当前目录和 PATH 环境变量的顺序,定位一条命令可能对应的磁盘文件。当我们不知道一个命令具体的磁盘文件路径的时候,就可以用这个脚本搞定。
例如,如果你想知道 notepad 命令的路径可以键入如下命令:
which notepad
就会得到答案。
C:\Windows\system32\notepad.exe
C:\Windows\notepad.exe
一共找到了 2 个相关文件
[Shell] 纯文本查看 复制代码
@Echo off
setlocal enabledelayedexpansion
Set /a v=0
Echo.
If {%1}=={} (
Echo. Usage %0 ^<Command^>
Goto End
)
For /F %%a In ('CD') Do Set CWD=%%a
Set X="!CWD!\%1.*"
For %%a in (!X!) Do (
Echo. %%a
Set /a v=!v!+1
)
For /F "tokens=1,* delims==" %%a in ('PATH') Do Set P=%%b
:Loop
If {!P!}=={} Goto Quit
For /F "tokens=1,* delims=;" %%a In ("!P!") Do (
Set X=%%a
Set P=%%b
If !X:~-1!==\ Set X=!X:~0,-1!
Set X="!X!\%1.*"
For %%i in (!X!) Do (
Echo. %%i
Set /a v=!v!+1
)
)
Goto Loop
:Quit
If Not !v! equ 0 Echo.
Echo. 一共找到了 !v! 个相关文件
:End
Echo.
Echo.
把这些代码复制,保存为 which.cmd 然后在这个文件路径下起一个 cmd 窗口,就可以使用了。
如果一个命令用此脚本找不到对应的磁盘文件,那就可以断定,这条命令一定是操作系统的内部命令。 |