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

2023-11-15

另一篇文章 巧用快捷方式实现自定义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)在浏览器的"查看"选项卡中,选中"文件扩展名"复选框,然后再修改文件名即可.

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Matplotlib 标准化颜色条 (Python)

    我正在尝试使用 matplotlib 当然还有 numpy 绘制轮廓图 它有效 它绘制了它应该绘制的内容 但不幸的是我无法设置颜色条范围 问题是我有很多图 并且需要所有图都具有相同的颜色条 相同的最小值和最大值 相同的颜色 我复制并粘贴了在
  • 如何使用pycaffe重构caffe网络

    我想要的是 加载网络后 我将分解一些特定的图层并保存新的网络 例如 原网 数据 gt conv1 gt conv2 gt fc1 gt fc2 gt softmax New net 数据 gt conv1 1 gt conv1 2 gt c
  • 如何更改充当按钮的范围的文本

    我正在为自定义 Web 应用程序编写自动化测试 我遇到了无法更改跨度文本的问题 我尝试过使用 driver execute script 但没有运气 如果我更好地了解 javascript 这确实会有帮助 据我所知 您无法单击跨度 并且列表
  • 如何用 python 和 sympy 解决多元不等式?

    我对使用 python 和 Sympy 还很陌生 并且遇到了使用 sympy 解决多元不等式的问题 假设我的文件中有很多函数 如下所示 cst sqrt x 2 cst exp sqrt cst x 1 4 log log sqrt cst
  • 如何自动替换多个文件的文本内容中的字符?

    我有一个文件夹 myfolder包含许多乳胶表 我需要替换其中每个字符 即替换任何minus sign by an en dash 只是为了确定 我们正在替换连字符INSIDE该文件夹中的所有 tex 文件 我不关心 tex 文件名 手动执
  • 如何将条目中的部分文本加粗并更改其背景颜色?

    我正在创建一个基于 Tkinter 的 GUI 它有一个 Entry 小部件 我想将其文本的一部分加粗并更改其背景颜色 但我不知道我该怎么做 如果我使用文本小部件 我可以只使用标签 但看起来它们不能与条目小部件一起使用 此代码使用文本小部件
  • 在 Python 中使用 sec 函数的反函数

    我正在创建一个程序 用于计算从一定高度范围和设定初始速度发射射弹的最佳角度 在我需要使用的最终方程中 存在一个反 sec 函数 它导致了一些麻烦 我已经导入了数学并尝试使用 asec 无论如何 但是数学似乎无法计算反秒函数 我也明白 sec
  • Python 中 genfromtxt() 的可变列数?

    我有一个 txt具有不同长度的行的文件 每一行都是代表一条轨迹的一系列点 由于每条轨迹都有自己的长度 因此各行的长度都不同 也就是说 列数从一行到另一行不同 据我所知 genfromtxt Python 中的模块要求列数相同 gt gt g
  • 在 python-docx 中搜索和替换

    我有一个包含以下字符串的文档 模板 你好 我的名字是鲍勃 鲍勃是一个很好的名字 我想使用 python docx 打开此文档并使用 查找和替换 方法 如果存在 来更改每个字符串 Bob gt Mark 最后 我想生成一个新文档 其中包含字符
  • 当x轴不连续时如何删除冗余日期时间 pandas DatetimeIndex

    我想绘制一个 pandas 系列 其索引是无数的 DatatimeIndex 我的代码如下 import matplotlib dates as mdates index pd DatetimeIndex 2000 01 01 00 00
  • 从命令行启用/禁用 Windows 10 中的设备 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个特定的硬件 我想在每次 Windows 重新启动时禁用并重新启用它 我创建了一个批处理脚本 该脚本应该执行此操作 然后运行我的程序
  • 字典的嵌套列表

    我正在尝试创建dict通过嵌套list groups Group1 A B Group2 C D L y x 0 for y in x if y x 0 for x in groups d k v for d in L for k v in
  • 负整数的Python表示

    gt gt gt x 4 gt gt gt print b format x x 4 100 gt gt gt mask 0xFFFFFFFF gt gt gt print b format x mask x mask 4294967292
  • 使用 Doc2vec 后如何解释 Clusters 结果?

    我正在使用 doc2vec 将关注者的前 100 条推文转换为矢量表示形式 例如 v1 v100 之后 我使用向量表示来进行 K 均值聚类 model Doc2Vec documents t size 100 alpha 035 windo
  • 是否可以强制浮点数的指数或有效数匹配另一个浮点数(Python)?

    这是我前几天试图解决的一个有趣的问题 是否可以强制一个的有效数或指数float与另一个人一样float在Python中 出现这个问题是因为我试图重新调整一些数据 以便最小值和最大值与另一个数据集匹配 然而 我重新调整后的数据略有偏差 大约小
  • Scrapy 蜘蛛无法工作

    由于到目前为止没有任何效果 我开始了一个新项目 python scrapy ctl py startproject Nu 我完全按照教程操作 创建了文件夹和一个新的蜘蛛 from scrapy contrib spiders import
  • 如何在单独的文件中使用 FastAPI Depends 作为端点/路由?

    我在单独的文件中定义了一个 Websocket 端点 例如 from starlette endpoints import WebSocketEndpoint from connection service import Connectio
  • Google App Engine 中的自定义身份验证

    有谁知道或知道我可以在哪里学习如何使用 Python 和 Google App Engine 创建自定义身份验证流程 我不想使用 Google 帐户进行身份验证 并且希望能够创建自己的用户 如果不是专门针对 Google App Engin
  • PyQt 中的线程和信号问题

    我在 PyQt 中的线程之间进行通信时遇到一些问题 我使用信号在两个线程 发送者和监听者 之间进行通信 发送者发送消息 期望被监听者接收 但是 没有收到任何消息 谁能建议可能出了什么问题 我确信这一定很简单 但我已经环顾了几个小时但没有发现
  • 从时间序列生成日期特征

    我有一个数据框 其中包含如下列 Date temp data holiday day 01 01 2000 10000 0 1 02 01 2000 0 1 2 03 01 2000 2000 0 3 30 01 2000 200 0 30

随机推荐

  • 物联网--思科模拟器--简单风力发电

    参考视频入口 实验拓扑图 需要注意的是ioe7连的是d1口 ioe5连的d0 服务器配置ip 电脑 风力发电 电显示器配置ip 电脑上注册 服务器上查看 为ioe6 ioe7个设置控制的账号密码 电脑上查看控制 效果图
  • lambda中sorted排序

    准备工作 新建一个User类 使用stream排序操作 默认ASC排序 stream倒序排序操作 sorted Comparator reverseOrder 代码例子 lambda sorted排序 Test public void te
  • Linux操作系统与Shell编程

    Linux是自由 开源的操作系统 安装在计算机的硬件之上 是用来操作计算机硬件和软件资源的系统软件 一般应用于专业的web服务器上 具有以下特性 Linux注重系统的安全性 对文件访问权限有严格设定 最高权限账户为root用户 可以操作一切
  • localStorage,sessionStorage和cookie的介绍及区别

    localStorage sessionStorage和cookie的介绍及区别 1 localStorage localStorage是HTML5规范中作为持久化保存客户端数据的方案 localStorage可以用于数据缓存 日志存储等应
  • 机器学习基础(五)

    决策树 决策树是一种预测模型 它代表着对象属属性与对象值之间的一种映射关系 树中的每个节点代表一个对象 分叉路径 或者叫树枝 则代表一个属性值 决策树常用方法 分类树分析 是一种监督学习 用于预计结果可能为离散类型 回归树分析 用于预计结果
  • 在Java中response如何设置文件路径

    在 Java 中 使用 java io File 类来设置文件路径 例如 下面的代码展示了如何创建一个 File 对象 并使用它来设置文件路径 import java io File 创建一个 File 对象 表示当前目录下的 test t
  • “warning NU1701: 项目依赖包与项目框架net6.0不完全兼容“

    问题 一个Net6的Web项目 有一个警告 warning NU1701 已使用 NETFramework Version v4 6 1 NETFramework Version v4 6 2 NETFramework Version v4
  • 服务器之间如何传输数据

    有时候大家需要将一台服务器内的数据传输到另外一台设备 有很多种方法 如果两台物理机离得很近 可以通过移动硬盘传输 如果是跨地区的 有人首先通过filezilla将数据下载到windows电脑上 在通过filezilla上传到另外一台服务器
  • 小红书怎么做关键词搜索排名?哪些行业适合在小红书推广?

    小红书 是口碑营销 社群营销 笔记营销 是大众点评的电商版本 靠分享打天下的 分享就是口碑 很多人问小红书怎么做关键词搜索排名 今天就小编带你领略一下小红书的关键词排名引流秘籍 一 搞关键词布局 1 文章标题中必须要带有关键词 醒目的标题
  • LeetCode-1343. Maximum Product of Splitted Binary Tree

    Given a binary tree root Split the binary tree into two subtrees by removing 1 edge such that the product of the sums of
  • 解决windows环境下cmake无法生成Makefiles文件

    Step1 首先确保你的电脑安装了make 如何安装了MinGW可以将bin目录下的mingw32 make exe或mingw64 make exeq强制改为make exe并添加环境变量也可以 Step2 执行代码 cmake G Un
  • HTTP API网关选择之一Kong介绍

    Kong是Mashape开源的高性能高可用API网关和API服务管理层 它基于OpenResty 进行API管理 并提供了插件实现API的AOP Kong在Mashape 管理了超过15 000 个API 为200 000开发者提供了每月数
  • 四. Gateway 限流

    目录 一 限流中的基础问题 1 为什么限流及常见限流方案 2 常见限流算法 计数器限流算法 令牌桶算法 漏桶算法 3 几种基础版限流实现方案 基于redis实现限流 基于 Guava RateLimiter 实现令牌算法 二 Gateway
  • 详解POW工作量证明原理

    原文地址 来自 微信公众号 区块链大师 POW工作量证明 英文全称为Proof of Work 早在比特币出现之前就已经有人探索 常见的是利用HASH运算的复杂度进行CPU运算实现工作量确定 当然你也可以利用卷积求导 大质数分解这些复杂的运
  • 14-7 使用 css 调控样式

    1 修改前端样式 可以将 ui 文件与 css 文件进行关联 类似于 html 和 css 的关系 只不过需要注意的是 前端样式可以借助 glade 进行修改 但并没有将修改应用至程序窗口 仅仅提供了预览功能 样式修改后还需要修改后台代码应
  • DeepLabv3+

    DeepLabv3 引言 语义分割中的DCNN主要有两种结构 空间金字塔池化SPP和编码器 解码器encoder decoder SPP通过多种感受野池化不同分辨率的特征来挖掘上下文信息 Encoder decoder逐步重构空间信息来更好
  • chatGTP给出的python版快速排序

    chatGTP给出的python版快速排序 def quick sort arr 快速排序函数 对给定的数组 arr 进行原地排序 param arr 待排数组 return 原地排序后的数组 arr quick sort helper a
  • MediaWiki的安装与使用

    文章目录 操作环境与相关配置信息 操作环境 配置信息 软件安装 运行MediaWiki容器 运行MySQL 使用MediaWiki连接MySQL 使用docker compose 操作环境与相关配置信息 操作环境 操作系统 root mas
  • 数据库安装+OGG数据同步

    数据库 Oracle 11g 操作系统 linux 7 2 数据库安装 单机 gt ogg搭建 gt 数据同步 一 数据库安装 查看操作系统版本 oracle standbbk cat etc redhat release Red Hat
  • 巧用快捷方式实现自定义Win+R命令(VBS版).

    另一篇文章 巧用快捷方式实现自定义Win R命令 手动版 介绍了如何手动创建自定义Win R命令 这篇文章将介绍如何使用脚本自动创建并管理自定义Win R命令 为什么要使用这个脚本 大家都知道用Win R能输入很多windows内置命令 比