最近发现有一些经常重复性做的工作,包括:
- 打开命令行查看本机在局域网的 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 中实现。积累得多了,这个工具就变成了一个个人专属的小工具箱,越用越顺手。