方便的个人命令行小助理

最近发现有一些经常重复性做的工作,包括:

  • 打开命令行查看本机在局域网的 IP
  • 用 Inkscape 命令行转换矢量图格式
  • 调用已写好的某脚本快速查看关注股票的价格

等等。这些工作往往都有确切的实现办法,但往往用起来相对没那么简便,而且输出也不一定足够精简,比如输出局域网IP功能就只输出一个IP,而且最好命令就是一条非常简单的ip

想了一下,实现一个这样需求很简单的小工具还是比较容易的,我想的解决方案是这样的:第一步,写一个 Python 脚本,可以接受命令行参数来实现不同的功能;第二步,让这个脚本可以命令行运行。

需求想明白了,实现就简单了。

第一步,先编写 tools.py,以输出 IP 为例:

import sys
args = sys.argv

def main():
    try:
        if args[1] == 'ip':
            get_ip()
    except:
        pass

def get_ip():
    import socket
    ip = socket.gethostbyname(socket.gethostname())
    print(ip)

if __name__ == '__main__':
    main()

这里实现了在命令行中输入 python tools.py ip 就输出本机IP的功能,没有额外输出,也没有额外的功能(暂时)。

第二步,让这个程序可以在任意位置的命令行简便地执行。办法之一是把它做成命令行程序,这个有不少现成的 Python 库可以做到。我选择的是另一种 Windows 内置的一种方法,把它放到一个 alias.cmd 文件中,里面给上述命令起一个别名,然后让 cmd 每次启动时都先读一下上面的 alias(如果是*nix系统就更简单地可以直接用alias的功能)。

首先 alias.cmd 文件中加入下面一行:

DOSKEY tools=python "path_to_tools.py" $*

这样可以把 tools 命令连同后面的任意参数转换为后面那一段再加参数的格式。

然后在 regedit 中,定位到

HKEY_CURRENT_USER -> Software -> Microsoft -> Command Processor

添加一个字符串值,名称为 AutoRun,值为上面 alias.cmd 的完整路径。


到此为止,任意时候按下 win+R 键,输入cmd,回车,再键入 tools ip 就可以方便地查看本机 IP 了。相应地,其它功能也可以在 tools.py 中实现。积累得多了,这个工具就变成了一个个人专属的小工具箱,越用越顺手。

links

social