吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2315|回复: 2
收起左侧

[其他原创] Linux 系统 which 命令的脚本实现

[复制链接]
老伙计 发表于 2018-8-10 17:32
本帖最后由 老伙计 于 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 窗口,就可以使用了。
        如果一个命令用此脚本找不到对应的磁盘文件,那就可以断定,这条命令一定是操作系统的内部命令。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

cyhcuichao 发表于 2018-8-10 18:21
我没看懂
 楼主| 老伙计 发表于 2018-8-10 18:25
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 18:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表