25

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

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

这可行,但如果没有“.svn”文件/文件夹,批处理文件会显示警告:“系统找不到指定的文件。” 这个警告非常嘈杂,所以我想知道如何让它明白,如果它没有找到任何“.svn”文件/文件夹,他必须跳过 RD 命令。

通常使用通配符就足够了,但在这种情况下我不知道如何使用它们,因为我不想删除扩展名为 .svn 的文件/文件夹,但我想删除完全命名为“.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")

但它也不起作用,他什么也没删除。

4

8 回答 8

41

你可以试试

FOR /R myfolder %%X IN (.svn) DO (RD /S /Q "%%X" 2>nul)
于 2010-03-28T11:47:41.780 回答
4
for /f "tokens=* delims=" %%i in ('dir /s /b /a:d *svn') do (rd /s /q "%%i")
于 2010-12-14T10:10:55.763 回答
2

使用 find 类似的东西:

rm -rf `find . -name ".svn" -type d`

编辑:

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

于 2010-03-28T12:06:47.487 回答
1

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

我认为这很容易我会分享。我正在将几个项目从 .SVN 转换为 .GIT,所以这很棒。它向资源管理器添加了一个菜单项,以便您可以删除文件夹。创建一个 .reg 文件,然后将其导入。

在此处输入图像描述

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\" \""
于 2016-04-15T12:24:12.140 回答
0

奇怪的旁注:如果我使用

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

代替


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

它不仅列出了所有以 .svn 结尾的目录,还列出了它们的所有内容。这是 For 命令中的一个 BUG,它给了我一个扩展,我没有给它通配符。很奇怪。

于 2012-07-13T15:36:42.423 回答
0

如果要删除 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中。运行。你完成了。

感谢http://www.axelscript.com/2008/03/11/delete-all-svn-files-in-windows/

请记住,上面的代码有 .svn,而链接中的代码只有 *svn,所以最好有 .svn,以免意外产生不良影响。

于 2012-11-25T15:43:49.380 回答
-1

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

find ./ -name ".svn" | xargs rm -Rf

于 2013-01-03T20:26:28.953 回答
-2

删除windows上的所有svn文件

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

.svn 是文件夹名称

于 2014-04-07T02:18:33.683 回答