Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用windows注册表删除所有.svn和.project文件_Windows_Batch File_Registry - Fatal编程技术网

使用windows注册表删除所有.svn和.project文件

使用windows注册表删除所有.svn和.project文件,windows,batch-file,registry,Windows,Batch File,Registry,A当我有一个注册表文件时,当右键单击目录时,它会删除.svn文件。我想扩展此windows注册表文件,同时删除从Zend Studio创建的一些临时文件: .buildpath .项目 .设置(目录) 以下是这个问题的答案: 我有: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shell\DeleteSVN] @="Delete SVN Folders" [HKEY_LOCA

A当我有一个注册表文件时,当右键单击目录时,它会删除.svn文件。我想扩展此windows注册表文件,同时删除从Zend Studio创建的一些临时文件:

  • .buildpath
  • .项目
  • .设置(目录)
以下是这个问题的答案:

我有:

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\" \""

有关当前执行的命令的一些详细信息:

  • cmd.exe/c
    :将调用一个新的命令解释器,执行下面的命令,然后退出(这就是
    /c
    的作用)。命令的其余部分(在第一个和最后一个
    \“
    之间是将由命令解释程序执行的命令)
  • 标题删除%1中的SVN文件夹
    :将命令解释器的标题更改为“删除文件夹中的SVN文件夹”
  • color9a
    :更改命令解释器的颜色方案
  • 对于(.svn)中的/r\%1\“%%f执行RD/s/q\“%%f\”
    :将删除当前文件夹中名为.svn的所有文件夹
%1表示您右键单击的文件夹。命令之间的
&&
表示命令解释器将依次执行所有三个命令。您应该做的是在命令行末尾添加您自己的命令,如:

@=“cmd.exe/c\”标题删除%1和&COLOR 9A和&FOR/r\%1\“%%f中的SVN文件夹(.SVN)DO RD/s/q\“%%f\”&&&&MyCommand*\”


其中MyCommand是删除临时文件所需的命令。

我想这就是您要查找的。我只对最后一行进行了更改

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 \""
此解决方案与Laf所描述的类似,只是他建议在最后一个命令之前使用&。我认为这可能会给您带来问题,因为下一个命令只有在RD成功的情况下才会执行。但是您当前的算法尝试从所有子目录中删除该目录,即使它不存在。我使用了&,因此无论RD的结果如何,next命令(DEL)始终执行。我扩展了RD以删除两个目录,添加的DEL命令将删除两个文件

我将stderr重定向到nul,这样你就不会看到一堆错误消息。该算法效率很低,根据子目录的数量可以生成大量错误消息


如果您的需求变得更加复杂,或者如果您想开发一个更高效的脚本,您最好创建一个批处理文件来完成这项工作,并从注册表项调用该批处理文件。在一行中读取和维护一组复杂的命令会有点混乱。在t注册表。

您的问题是什么?您是否要求他人为您实现其他功能?您是否尝试过某些功能,并且遇到了问题?是的,我也希望获得有关删除额外文件的帮助。我会自己尝试,但我不知道从何处开始。听起来您已经有了一个起点,即删除svn文件。只需调整它以删除您要删除的其他文件。是的,我已经有了一个起点,但我真的不知道这行代码在做什么。对于初学者来说,代码不是很可读。我已尝试将:(.svn)更改为(.svn,.settings)但这破坏了代码注意,要删除.svn文件,还有一个标准的svn命令:
svn export
(),它可以通过外壳扩展名使用,例如turtoisesvn()