Joh*_*lia 3 windows registry batch-file
我有一个注册表文件,当右键单击目录时删除.svn文件.我想扩展这个Windows注册表文件,以删除从Zend Studio创建的一些临时文件:
根据这个问题的答案:Windows批处理文件删除.svn文件和文件夹
我有:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@="Delete SVN Folders"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""
Run Code Online (Sandbox Code Playgroud)
我想这就是你要找的东西.我只改变了最后一行.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN]
@="Delete SVN Folders"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && color 9A && for /r \"%~1\" %%F in (.) do (rd /s /q \"%%~fF\.svn\" \"%%~fF\.settings\" & del \"%%~fF\.buildpath\" \"%%~fF\.project\")2>nul \""
Run Code Online (Sandbox Code Playgroud)
这个解决方案类似于Laf所描述的,除了他建议在最后一个命令之前使用&&.我认为这可能会给你带来问题,因为下一个命令只会在RD成功时执行.但是您当前的算法会尝试从所有子目录中删除该目录,即使它不存在.我使用&以便始终执行下一个命令(DEL),而不管RD的结果如何.我扩展了RD以删除两个目录,添加的DEL命令删除了这两个文件.
我将stderr重定向到nul,这样你就不会看到一堆错误消息.该算法非常低效,并且可以根据子目录的数量生成大量错误消息.
如果您的要求变得更复杂,或者您想要开发更高效的脚本,那么最好创建一个完成工作的批处理文件,并从注册表项中调用批处理文件.在一行上读取和维护一组复杂的命令有点麻烦.逃脱序列在注册表中也变得令人厌烦.