巧用快捷方式实现自定义Win+R命令(VBS版).

另一篇文章 巧用快捷方式实现自定义Win+R命令(手动版). 介绍了如何手动创建自定义Win+R命令.

这篇文章将介绍如何使用脚本自动创建并管理自定义Win+R命令.

为什么要使用这个脚本?

大家都知道用Win+R能输入很多windows内置命令,比如:

cmd 可以打开控制台窗口;

regedit 可以打开注册表编辑器;

msconfig 可以打开微软配置程序;

notepad 可以打开笔记本;

mspaint 可以打开画图;

等等,这些命令使用起来很快捷.

那么,我们可不可以自定义自己的命令呢?

是的,用这个脚本就可以自定义Win+R命令.

另外,你是否为下载的命令行工具无法在任意路径执行(需要手动添加到系统路径中,很麻烦),而烦恼呢?

这个v1.1之后的脚本还有一个功能,就是把命令行工具添加到可运行的路径中,而无须做移动文件,修改路径等多余的操作,比如:

命令行中在任意位置输入 python 可以启动PYTHON解释器(python.exe);

命令行中在任意位置输入 iperf 可以启动网络测速工具(iperf3.exe);

命令行中在任意位置输入 ffmpeg 可以启动音视频转换工具(ffmpeg.exe);

命令行中在任意位置输入 curl 可以启动下载工具(curl.exe);

命令行中在任意位置输入 adb 可以启动安卓调试工具(adb.exe);

命令行中在任意位置输入 aria2c 可以启动全功能下载工具(aria2c.exe);

命令行中在任意位置输入 upx 可以启动加壳脱壳工具(upx.exe);

等等,可以随时自行添加和修改;

命令行工具的可执行文件可以放在任意位置(如果工具不用安装,则推荐放在"d:\freesoft"目录下,方便管理);

(命令行工具的脚本使用方式与窗体应用程序相同,详见下文)

为什么要用脚本,而不是程序?

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"目录中创建一个以你输入名称为主文件名的快捷方式.

自动进行了上边的步骤以后,就可以使用自定义命令了:

下边是详细操作步骤:

先上脚本(文件名"自定义Win+R命令.vbs",保存类型"所有文件",保存编码"ANSI"):

' 脚本说明 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"/"控制台"/"PowerShell"执行.

总结

使用Win+R运行自定义命令可以极大的提高工作效率,而通过此脚本来维护自定义命令又可以进一步提高效率.实在是太方便了!

FAQ

Q:双击VBS脚本文件打开的是记事本怎么办?

A:这是因为系统没有显示扩展名,实际的扩展名仍为".txt",这就需要显示扩展名:

(Win7)在文件浏览器的"组织"菜单中选择"文件夹和搜索选项",在"查看"页面,找到并取消选中"隐藏已知文件的扩展名",然后再修改文件名即可.

(Win10)在浏览器的"查看"选项卡中,选中"文件扩展名"复选框,然后再修改文件名即可.

Q1:安装过程中遇安全软件拦截怎么办?

A:这是由于脚本要修改系统的环境变量"Path"路径引起的,脚本不包含任何恶意代码,在安全软件的警告中直接选择"忽略"即可.

Q2:如何用vbs模拟win键?

A:在vbs中,可以使用大漠ActiveX组件(dm.dll)来模拟Windows键;

Q3:vbs脚本如何自定义进程名称?

A:用VB6/VB.NET写个EXE程序,代码照着vbs写,略加改动就可以运行,这样就能自定义进程名称了;

  • 13
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 22
    评论
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

milaoshu1020

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值