教你自定义【运行...】快捷命令

不知何时起,渐渐习惯了使用Win+R键呼出【运行...】对话框,然后在其中输入cmd,便能打开Windows命令行方式;输入notepad,便能打开记事本。

今天突发奇想,要是能将这个功能扩展到非Windows自带程序,那该多好啊,比如输入QQ,运行QQ;输入foxmail运行foxmail……

记得以前在学Java时第一课就提到Java的配置问题,要实现在命令行的快捷调用程序,就要在系统环境变量里配置。


其实,cmd与notepad,分别是“命令行程序”与“记事本”的实质程序名:cmd.exe及notepad.exe。而在【运行...】里输入notepad,实则是运行了“C:\windows\system32\notepad.exe”这一条命令。而之所以系统能自动将“cmd”的路径及后缀名补全,是因为设置了系统的环境变量(主要是Path及PATHEXT两个系统环境变量)。

系统环境的变量可以这样查看和修改:
右键【我的电脑/计算机】——【高级】——【环境变量】

Path环境变量,其内容是一些以分号分割的目录。其作用是告诉系统当遇到无法识别的命令时自动去Path所列出的目录中寻找相应文件(程序)。
PATHEXT环境变量,其内容是一些以分号分隔的后缀名。其作用是告诉系统当遇到无法识别的命令时自动补全PATHEXT中所列的后缀名并寻找相应的文件(程序)。

假设:
Path的值(内容)为:c:\path\;d:\document\;
PATHEXT的值(内容)为:.TXT;.MP3;.DOC;

那么,当你输入一个系统不认识的命令(如:a)时,系统会试图寻找以下文件,如果存在,则运行。
C:\path\a.txt
C:\path\a.mp3
C:\path\a.doc
D:\document\a.txt
D:\document\a.mp3
D:\document\a.doc


那么,如果我要让系统能识别QQ,也就是自动将"QQ"补全为“D:\Program Files (x86)\Tencent\QQ\QQ.exe”话,那么无非就是要作以下的添加:
在Path中添加 D:\Program Files (x86)\Tencent\QQ\
在PATHEXT中添加 .EXE
添加的方法是在原先的内容后面添加半角分号,然后跟上要添加的字符串。
根据上面那个例子来添加,则是:
Path的值(内容)为:c:\path\;d:\document\;D:\Program Files (x86)\Tencent\QQ\;
PATHEXT的值(内容)为:.TXT;.MP3;.DOC;.EXE;
于是,当运行“QQ”时候,系统会在以下文件内搜索:
C:\path\qq.txt
C:\path\qq.mp3
C:\path\qq.doc
C:\path\qq.exe
D:\document\qq.txt
D:\document\qq.mp3
D:\document\qq.doc
D:\document\qq.exe
D:\Program Files (x86)\Tencent\QQ\qq.txt
D:\Program Files (x86)\Tencent\QQ\qq.mp3
D:\Program Files (x86)\Tencent\QQ\qq.doc
D:\Program Files (x86)\Tencent\QQ\qq.exe

显然,只有最后一条路径是有效的,于是QQ运行……


事情并没有那么简单。如果有这么简单的话我也不会为此写一篇博客了。

我想实现以下功能:在【运行...】中输入"ue",便能打开UltraEdit(一个十六进制编辑器)。

好,问题来了。UltraEdit程序并不是以“ue.exe”命名的,而是:"uedit32.exe"

换言之,当我即便我添加了UE的程序路径与后缀名后,系统仍是以 [路径]ue.[后缀名]的形式来寻找的,并不能找到"D:\Program Files (x86)\IDM Computer Solutions\UltraEdit-32\uedit32.exe"

这样的情况还有很多,比如我想输入“ut”打开μTorrent,输入"hi"打开百度Hi,输入"word"打开Microsoft Word。而这些程序的名字分别为:uTorrent.exe、BaiduHi.exe、winword.exe。

我们可以利用快捷方式+环境变量的方式来解决

首先,随便在哪儿新建一个文件夹,名字也随意。比如我建立的是C:\MyRun,并把它添加到环境变量Path中,使之成为默认搜索的文件夹;再在PATHEXT中添加.LNK ,使默认搜索快捷方式文件(.lnk)。

然后在此文件夹中新建快捷方式,将快捷方式指向要打开的文件(程序),而快捷方式本身命名为方便记忆的名称。

例如快捷方式名为ue,而它指向的是:"D:\Program Files (x86)\IDM Computer Solutions\UltraEdit-32\uedit32.exe"

这样一来,当我【运行...】“ue”时,系统会自动找到C:\MyRun\ue.lnk,而它直接指向uedit32.exe,并自动打开之。

利用环境变量+快捷方式的方法,还可以实现许多效果。

比如输入music打开“我的音乐”文件夹,就是在C:\MyRun目录下建立一个名为music并指向我的音乐的文件夹(我计算机中路径是“I:\我的文档\音乐”,大家的可能不一样,多半是默认的吧。)

又如,直接将快速启动栏的“显示桌面”按钮拖动到"C:\MyRun"下,则可以打开“桌面文件夹”。——这个问题很奇怪,直接运行该文件是最小化所有窗口显示出桌面,而当通过【运行...】desktop快捷方式时,则变成了打开一个以桌面为当前路径的资源管理器窗口……

问题还没结束,我又想实现的效果是:【运行...】wildgun,直接在浏览器中打开我的博客链接(http://hi.baidu.com/wildgun)。


为此我研究了一番,找到了三条都并不完美的方法。于是我将之都列出,说明其缺陷及其实现方法:

方法一:网页快捷方式文件
缺点:需要跟.url后缀。
实现方法:直接把网页做成网页快捷方式文件(*.url)如wildgun.url指向http://hi.baidu.com/wildgun,并在PATHEXT中添加.URL后缀。
虽然已经添加该后缀,但命令行仍无法自动找到该文件,需【运行...】“wildgun.url”方能打开。
多了4个字符,违背了偷懒的精神,不考虑使用该方法。

方法二:批处理+网页跳转
缺点:要创建两个文件,并且在运行批处理程序时会自动跳出“命令行方式”的黑色窗口
实现方法:在C:\MyRun下建立wildgun.bat程序,其内容为:wildgun.html
并在C:\MyRun 下建立wildgun.html网页文件,网页文件内容是使用<meta>或javascript跳转至我的个人博客。
meta法:<meta http-equiv="refresh" content="1;url=http://hi.baidu.com/wildgun/">
javascript法:<script>window.location.href("http://hi.baidu.com/wildgun");</script>
但总觉得有窗口闪一下跳出来很麻烦,感觉是后台被运行了什么危险程序,而虽然可以用VBScript脚本是指在后台运行,但似乎用了VBS就更接近危险程序了- -,放弃此方案。

方法三:浏览器快捷方式+URL
缺点:只能确定以某个浏览器打开网页,而无法设定为使用系统默认浏览器打开。(换言之,哪天系统默认浏览器改了,自定义命令仍是以快捷方式所指向的浏览器打开。)
实现方法:新建快捷方式文件,命名为wildgun,指向 "D:\Program Files (x86)\Maxthon2\Maxthon.exe" http://hi.baidu.com/wildgun
(上行中指向内容包括引号内的路径及引号后的网址)
这样,系统就会以maxthon.exe打开我的百度空间了。经试验,IE、Maxthon2、TT、Opera、Safari、Chrome都支持这种方式打开。

我现在用的就是这种方式。当然,期待完美解决方案,能实现以系统默认浏览器打开。

顺便一说,结合上次的研究,我现在可以在【运行...】中输入“utadmin”,直接打开μTorrent的WebUI,实现更方便更快捷的远程控制了!

于是大家也试着玩玩看吧。

你可能感兴趣的:(C++,c,qq,C#,音乐)