ATscore

  • 首页
  • 听音乐
  • 科普
  • 冒险岛
  • 声明
  • 关于
  1. 首页
  2. 信息技术
  3. 正文

将命令添加到windows右键菜单

2021年12月25日 793点热度 2人点赞 0条评论

file

当你自己写好了一个小工具,或者找到一个不错的小工具,但却只能命令行运行时,若能将其添加到右键中,那肯定非常方向。

搜索了一些资料,发现这其实就叫windows shell编程

原理

注册原理

在windows注册表中,登记了若干种类型的右键执行方式,如图
file

  1. Folder 文件夹
  2. 目录 这个我不太清楚是什么东西
  3. 文件系统对象,也不太清楚
  4. 驱动器,就是盘符
  5. 所有文件
  6. background,也就是空白处

重点可添加的就是background空白处、allfiles所有文件类型,这两类。

其实你的工具如果是只针对特定类型文件的,还可以进一步通过寻找到对应文件类型的clsid去寻找对应的注册表键值,这里我没有深入研究了。

注册表结构

如下图
file

在hkey_classes_root-*-shell-$NAME
有(默认)键值,用于显示
有Icon键值,用于指示图标
在下层command内还有命令行

file
注意,这个命令的写法,带有绝对路径,引号引用,参数列表用%1等序号表示

传参

经我研究,右键执行命令时,应该会带入当前的work dir、指向的文件。如果有多个文件,会并发执行。

多参数命令

如果是形如 cp a.txt a.bak.txt的,参数要怎么写呢?
可以通过bat来绕过
创建一个bat脚本,在脚本中只利用%1,生成完整的命令。
在 (这篇文章)[https://blog.csdn.net/qhs1573/article/details/100524255] 中,有一个比较好的例子。

@echo off
set testPath="D:/Demo/xyz/11111111.txt"
call :print %testPath%

:print 
rem 获取到文件路径
set file_path=%~dp1
echo %file_path%

rem 获取到文件名称
set file_name=%~n1
echo %file_name%

rem 获取到文件后缀
set suffix=%~x1
echo %suffix%

rem 截取倒数第四个开始 截取四个长度
set specStr=%filename:~-4,4%
echo %specStr%

pause

重点是,%~n1表示文件名,%~x1表示后缀,%1表示完整的第1个参数,%0是第0个参数。

实战

我懒的写windows注册表命令,找了一个工具,WinUtilites。
它有一个注册表工具。
file
点它,点添加,

添加命令行

file
很简单吧

添加计算器

file
也不难

添加自己的小工具

file
注意类型,选all files

然后把命令写成bat。

再然后利用跳转功能去注册表里修改bat的写法
file

file

然后就可以用啦,呵呵。

ATscore

用常识解读世界,用自己的大脑独立思考

Post Views: 806
标签: 暂无
最后更新:2022年1月11日

ATscore

用常识解读世界,用自己的大脑独立思考

点赞
< 上一篇
下一篇 >

文章评论

取消回复

ATscore

用常识解读世界,用自己的大脑独立思考

文章目录Toggle Table of ContentToggle
  • 原理
    • 注册原理
    • 注册表结构
    • 传参
    • 多参数命令
  • 实战
    • 添加命令行
    • 添加计算器
    • 添加自己的小工具

COPYRIGHT © 2022 atscore.cc. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS