另一篇文章 巧用快捷方式实现自定义Win+R命令(手动版). 介绍了如何手动创建自定义Win+R命令.
这篇文章将介绍如何使用脚本自动创建并管理自定义Win+R命令.
为什么要使用这个脚本?
大家都知道用Win+R能输入很多windows内置命令,比如:
cmd 可以打开控制台窗口;
regedit 可以打开注册表编辑器;
msconfig 可以打开微软配置程序;
notepad 可以打开笔记本;
mspaint 可以打开画图;
等等,这些命令使用起来很快捷.
那么,我们可不可以自定义自己的命令呢?
是的,用这个脚本就可以自定义Win+R命令.
为什么要用脚本,而不是程序?
1. 因为脚本简单,免去了使用开发环境的麻烦.
2. 因为脚本是开源的,不用担心有病毒.
这个脚本实现了什么功能?
这个脚本首先会进行安装:
1. 将自身复制到"D:\L\自定义Win+R命令.vbs"(如果目录不存在则自动创建)
2. 将"D:\L"加到系统的"Path"路径中.
3. 在"D:\L"中创建一个它自身的快捷方式(名称为"L").
4. 在"SendTo"(也就是发送到)目录创建脚本的快捷方式.
(路径是"C:\Users\用户名\AppData\Roaming\Microsoft\Windows\SendTo")
使用"发送到->自定义Win+R命令"的时候:
1. 在"D:\L"目录中创建一个以你输入名称为主文件名的快捷方式.
自动进行了上边的步骤以后,就可以使用自定义命令了:
下边是详细操作步骤:
先上脚本:
' 脚本说明 https://blog.csdn.net/milaoshu1020/article/details/80711574
' 脚本版本 v1.3
' [更新历史]
' 2020.02.06 v1.3 重构了脚本代码,增加设置安装目录的功能;
' 2019.06.03 v1.2 增加了安装时自动提权的代码;
' 2018.12.29 v1.1 新增加了对系统变量PATHEXT的注册,效果是自定义命令可以在命令行中使用(不用加扩展名".LNK");
' 2018.06.18 v1.0 初始版本,实现了基本功能
Option Explicit
Dim fso
set fso = createobject("scripting.filesystemobject")
Dim shell
set shell = createobject("wscript.shell")
Dim winr_mgr
Set winr_mgr = New winr_manager
winr_mgr.run
Class WinR_Manager
Public InstallPath
Public Property Get DefaultInstallPath()
defaultinstallpath = "D:\L\自定义Win+R命令.vbs"
End Property
Public Property Get InstallDir()
installdir = fso.getparentfoldername(installpath)
End Property
Public Property Get InstallDirName()
installdirname = fso.getfolder(installdir).name
End Property
Public Property Get InstallBase()
installbase = fso.getbasename(installpath)
End Property
Public Sub Run()
If wscript.arguments.count = 0 Then
Dim sh
Set sh = createobject("shell.application")
sh.shellexecute wscript.fullname,"""" & wscript.scriptfullname & """ -install",,"runas"
Else
If wscript.arguments(0) = "-install" Then
installpath = defaultinstallpath
Dim strInput
strinput = inputbox("请输入安装路径:",installbase,installdir)
If strinput = "" Then
wscript.quit
Else
installpath = fso.buildpath(strinput,fso.getfilename(defaultinstallpath))
End If
copyscriptfile
addtosystemenvironment
createinstdirlnk
createsendtolnk
msgbox "'" & installpath & "'安装完成,你现在可以:" & vbcrlf & _
"* 使用右键菜单中的'发送到'创建自定义命令." & vbcrlf & _
"* Win+R,输入'" & installdirname & "'以打开命令(快捷方式)列表目录." & vbcrlf & _
"* Win+R,输入'命令(快捷方式名称)'以打开相应的程序或者目录."
Else
prompttoaddlnk
End If
End If
End Sub
Sub PromptToAddLnk()
Dim i
For i = 0 To wscript.arguments.count - 1
Dim targetpath
targetpath = wscript.arguments(i)
Dim lnkname
lnkname = fso.getbasename(targetpath)
Dim lnkpath
do
lnkname = inputbox("请输入'" & fso.getfilename(targetpath) & "'的快捷方式名称(用于运行命令):",,lnkname)
lnkpath = fso.buildpath(fso.getparentfoldername(wscript.scriptfullname),lnkname & ".lnk")
If Not fso.fileexists(lnkpath) Or lnkname = "" Then
Exit Do
End If
Select Case msgbox("'" & lnkpath & "'文件已存在,是否覆盖?",vbexclamation Or vbyesnocancel)
Case vbyes
Exit Do
Case vbcancel
lnkname = ""
Exit Do
End Select
Loop While True
If lnkname <> "" Then
Dim shortcut
Set shortcut = shell.createshortcut(lnkpath)
shortcut.targetpath = targetpath
shortcut.save
msgbox "正在创建'" & lnkpath & "' ... 完成!"
End If
Next
End Sub
Sub CopyScriptFile()
If StrComp(installpath,wscript.scriptfullname,1) = 0 Then
Exit Sub
End If
If Not fso.folderexists(installdir) Then
fso.createfolder(installdir)
End If
fso.copyfile wscript.scriptfullname,installpath,true
End Sub
Sub AddToSystemEnvironment()
Dim pathname
pathname = installdir & ";"
Dim sysenv
Set sysenv = shell.environment("System")
If InStr(1,sysenv("PATH"),pathname,1) = 0 Then
sysenv("PATH") = pathname & sysenv("PATH")
End If
Dim extname
extname = ";.LNK"
If InStr(1,sysenv("PATHEXT"),extname,1) = 0 Then
sysenv("PATHEXT") = sysenv("PATHEXT") & extname
End If
End Sub
Sub CreateSendToLnk()
Dim sendtodir
sendtodir = shell.specialfolders("SendTo")
Dim lnkpath
lnkpath = fso.buildpath(sendtodir,installbase & ".lnk")
Dim shortcut
Set shortcut = shell.createshortcut(lnkpath)
shortcut.targetpath = installpath
shortcut.save
End Sub
Sub CreateInstDirLnk()
Dim lnkpath
lnkpath = fso.buildpath(installdir,installdirname & ".lnk")
If Not fso.fileexists(lnkpath) Then
Dim shortcut
Set shortcut = shell.createshortcut(lnkpath)
shortcut.targetpath = installdir
shortcut.save
End If
End Sub
End Class
为了方便菜鸟,这里同时也提供该脚本文件的下载地址:
链接:https://pan.baidu.com/s/1b6dj9vliihWY6cFDsCUBWA
提取码:bqfv
安装脚本
1. 复制上边的脚本内容到剪贴板,在任意位置新建一个文本文件,打开这个文件,将剪贴板内容拷到里边(此时可以修改脚本内容),保存文件(保存编码"ANSI"),然后将它更名为"自定义Win+R命令.vbs".
2.双击这个vbs脚,并执行安装操作.
使用脚本
1. 在要使用命令的文件或者快捷方式上点右键,选择"发送到->自定义Win+R命令",这里以QQ为例:
2. 在弹出的对话框中输入想要使用的命令名称,比如"qq",并点击确定.
至此脚本使用完成.
使用自定义命令
1. 点击Win键+R键,打开"运行"对话框窗口:
2. 输入自定义命令,如"qq",并点击"确定"(或者直接回车也可以):
3. QQ就运行起来了.
4. 你也可以运行"L",以管理命令,也就是快捷方式列表:
这是我的列表:
列表中的所有快捷方式都可以通过"Win+R"执行.
总结
使用Win+R运行自定义命令可以极大的提高工作效率,而通过此脚本来维护自定义命令又可以进一步提高效率.实在是太方便了!
FAQ
Q:双击VBS脚本文件打开的是记事本怎么办?
A:这是因为系统没有显示扩展名,实际的扩展名仍为".txt",这就需要显示扩展名:
(Win7)在文件浏览器的"组织"菜单中选择"文件夹和搜索选项",在"查看"页面,找到并取消选中"隐藏已知文件的扩展名",然后再修改文件名即可.
(Win10)在浏览器的"查看"选项卡中,选中"文件扩展名"复选框,然后再修改文件名即可.
Q:安装过程中遇安全软件拦截怎么办?
A:这是由于脚本要修改系统的环境变量"Path"路径引起的,脚本不包含任何恶意代码,在安全软件的警告中直接选择"忽略"即可.
Q:我的电脑没有D盘(或者D盘是光驱),我想装到C盘,怎么办?
A:在复制脚本内容(安装脚本第1步)时,将内容复制到记事本后需要修改内容:将 installpath = "D:\L\自定义Win+R命令.vbs" 这一行中的 D: 修改为 C: 就行了,修改后: installpath = "C:\L\自定义Win+R命令.vbs"