window添加右键菜单

开发针对目录的右键拓展

因为最近想删除 一个项目 多个目录下的.svn文件 所以考虑着能不能添加个右键  点击它的时候  可以帮我们删除目录所有的.svn文件 


首先来一个简单例子 做一个打开后 显示文件夹名称的右键

首先是 知道是 HKEY_LOCAL_MACHINESOFTWAREClassesFoldershell  添加一个项 就会自动在文件夹右键上添加一个菜单

新建一个记事本命名为 showname.reg  只要后缀是reg就行 内容如下:

#这一个必须要加 不然会报错

Windows Registry Editor Version 5.00         

#这个表示在shell下添加一个showpath的子项

[HKEY_LOCAL_MACHINESOFTWAREClassesFoldershellshowpath]

#这个表示在showpath项的默认值 设置为 ShowPath 这个showPath也就是我们的菜单名称

@="ShowPath"

#在showpath项下 在添加一个command子项 这个子项是要执行的文件或者命令的路径

[HKEY_LOCAL_MACHINESOFTWAREClassesFoldershellshowpathcommand]

#给他添加上默认值 是执行cmd命令 %1是参数  这里默认就是放的我们点击的文件夹名称

@="cmd /c echo %1 & pause"

另存为  双击导入到注册表 我们在任意文件夹上右键 发现多了个ShowPath 点击时弹出了一个dos命令 显示当前文件夹的路径

既然获取到了目录名 能不能使用dos下的 for命令 循环删除目录下的.svn文件了

首先我们要循环一个目录 找到某个文件的命令 是

看下面的命令 /r表示循环子目录  .或者%CD%表示扫描当前目录  in和(必须有个空格 括号表示要找的文件或者文件夹的名称

for /r . %s in (.svn) do echo %s;

或者(循环里支持多个脚本) 

        for /r %CD% %s in (svn) do  (

echo %s;

 );

我们知道 rd是删除目录名称 /S表示删除子目录  /Q表示不需要确认

rd /S /Q 目录名称

那么我们是不是可以 将目录替换成我们的%1 循环执行删除动作 这里上面%1里面有空格会有问题 所以我们用"把他扩起来

for /r “%1” %s in (.svn) do rd /S /Q %s;


我们新建一个clearsvn.reg文件内容如下(在cmd命令时只用一个%s 而在批处理文件或者注册表文件中要使用两个%%s)

Windows Registry Editor Version 5.00         

[HKEY_LOCAL_MACHINESOFTWAREClassesFoldershellclearsvn]

@="ClearSvn"

[HKEY_LOCAL_MACHINESOFTWAREClassesFoldershellclearsvncommand]

@="cmd /c echo %1 & for /r  "%1" %%s in (.svn) do rd /S /Q "%%s" & pause"

开发针对文件的右键拓展

文件的拓展是在注册表的 HKEY_CLASSES_ROOT*shell 下 我们添加一个右键 通过dos查询文件的内容

新建一个 dosquery.reg  内容如下

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT*shelldospad]
@="dosquery"
[HKEY_CLASSES_ROOT*shelldospadcommand]
@="cmd /c type "%1" &pause"


如果不记得Windows Registry Editor Version 5.00 可以通过regedit命令 打开注册表后 任意导出一个 就有了






原文地址:https://www.cnblogs.com/liaomin416100569/p/9331262.html