开发针对目录的右键拓展
因为最近想删除 一个项目 多个目录下的.svn文件 所以考虑着能不能添加个右键 点击它的时候 可以帮我们删除目录所有的.svn文件
首先来一个简单例子 做一个打开后 显示文件夹名称的右键
首先是 知道是 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell 添加一个项 就会自动在文件夹右键上添加一个菜单
新建一个记事本命名为 showname.reg 只要后缀是reg就行 内容如下:
#这一个必须要加 不然会报错
Windows Registry Editor Version 5.00
#这个表示在shell下添加一个showpath的子项
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\showpath]
#这个表示在showpath项的默认值 设置为 ShowPath 这个showPath也就是我们的菜单名称
@="ShowPath"
#在showpath项下 在添加一个command子项 这个子项是要执行的文件或者命令的路径
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\showpath\command]
#给他添加上默认值 是执行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_MACHINE\SOFTWARE\Classes\Folder\shell\clearsvn]
@="ClearSvn"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\clearsvn\command]
@="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\*\shell\dospad] @="dosquery" [HKEY_CLASSES_ROOT\*\shell\dospad\command] @="cmd /c type \"%1\" &pause"如果不记得Windows Registry Editor Version 5.00 可以通过regedit命令 打开注册表后 任意导出一个 就有了