Batch file 要删除.svn文件和文件夹的Windows批处理文件

Batch file 要删除.svn文件和文件夹的Windows批处理文件,batch-file,svn,delete-file,Batch File,Svn,Delete File,为了删除“myfolder”中的所有“.svn”文件/文件夹/子文件夹,我在批处理文件中使用以下简单行: FOR /R myfolder %%X IN (.svn) DO (RD /S /Q "%%X") 这是可行的,但如果没有“.svn”文件/文件夹,批处理文件将显示警告:“系统无法找到指定的文件。” 此警告非常嘈杂,因此我想知道如何使其明白,如果找不到任何“.svn”文件/文件夹,则必须跳过RD命令。 通常使用通配符就足够了,但在这种情况下,我不知道如何使用通配符,因为我不想删除扩展名为.

为了删除“myfolder”中的所有“.svn”文件/文件夹/子文件夹,我在批处理文件中使用以下简单行:

FOR /R myfolder %%X IN (.svn) DO (RD /S /Q "%%X")
这是可行的,但如果没有“.svn”文件/文件夹,批处理文件将显示警告:“系统无法找到指定的文件。” 此警告非常嘈杂,因此我想知道如何使其明白,如果找不到任何“.svn”文件/文件夹,则必须跳过RD命令。

通常使用通配符就足够了,但在这种情况下,我不知道如何使用通配符,因为我不想删除扩展名为.svn的文件/文件夹,但我想删除名为“.svn”的文件/文件夹,因此如果我这样做:

FOR /R myfolder %%X IN (*.svn) DO (RD /S /Q "%%X")
它将不再删除名为“.svn”的文件/文件夹。 我也试过:

FOR /R myfolder %%X IN (.sv*) DO (RD /S /Q "%%X")
但是也不行,他什么也不删除。

你可以试试

FOR /R myfolder %%X IN (.svn) DO (RD /S /Q "%%X" 2>nul)

类似于使用find:

rm -rf `find . -name ".svn" -type d`
编辑:


我知道这是针对linux的(我读的是bash而不是batch)。我把它放在这里是为了帮助那些随机出现在这里的Linux用户:)

奇怪的旁注:如果我使用

FOR /R . %%X IN (*.svn) DO (echo "%%X")
而不是


FOR /R myfolder %%X IN (.svn) DO (RD /S /Q "%%X")
它不仅列出了以.svn结尾的所有目录,还列出了它们的所有内容。这是For命令中的一个BUG,它给了我一个扩展,我没有给它通配符。很奇怪


Ken

如果要删除Windows中名为.svn的所有子文件夹 然后使用以下内容创建批处理文件:

for /f "tokens=* delims=" %%i in ('dir /s /b /a:d *.svn') do (
rd /s /q "%%i"
)
将其保存在文件del_All_Dot_SVN_Folders.cmd中。运行它。你的任务完成了

多亏了

记住上面的代码有.svn,而链接中的代码只有*svn,所以更好
使.svn不会意外产生不希望的效果

这是我最喜欢的,它简单而紧凑:

find./-name“.svn”| xargs rm-Rf


Fissh删除windows上的所有svn文件

for /d /r . %d in (.svn) do @if exist "%d" rd /s/q "%d"

.svn是文件夹名

实际上,这个答案来自Jesper Rønn Jensen
http://justaddwater.dk/2011/03/01/easy-delete-all-svn-subfolders-in-windows-explorer/

我想我会和大家分享的。我正在将几个项目从.SVN转换为.GIT,所以这非常棒。它向资源管理器添加一个菜单项,以便您可以删除文件夹。创建一个.reg文件并导入它


您知道SVN导出功能吗?“从工作副本导出一个干净的目录树”@nickf:谢谢你告诉我,但是当我需要删除.svn文件/文件夹时,我必须完成一个不同的任务。请注意,对于新版本的SubVersion(自1.7以来),.svn元数据文件夹仅位于签出的根级别,不是在每个目录中。@nickf:“Windows批处理文件”有什么问题?我是说一个扩展名为.BAT的文件。@Marco,你说的没有错。Niklaos刚刚给出了一个基于unix的答案,仅此而已。这只适用于批处理文件。当您直接在控制台窗口中使用它时,您应该删除第二个%。因此,它应该是:FOR/R myfolder%X IN(.svn)DO(RD/S/Q“%X”2>nul)cmd提示符:FOR/f“tokens=*delims=“%i IN('dir/S/b/a:d*svn')DO(RD/S/Q“%i”)
for /d /r . %d in (.svn) do @if exist "%d" rd /s/q "%d"
Windows Registry Editor Version 5.00
;
; Running this file will give you an extra context menu item in Windows Explorer
; "Delete SVN folders"
;
; For the selected folder, it will remove all subfolders named ".svn" and their content
; Tip from http://www.iamatechie.com/remove-all-svn-folders-in-windows-xp-vista/
;
; Enrichened with comments by Jesper Rønn-Jensen ( http://justaddwater.dk/ )
;
;
[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 && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""