Подтвердить что ты не робот

Пакетный файл Windows для удаления файлов и папок .svn

Чтобы удалить все ".svn" файлы/папки/подпапки в "myfolder", я использую эту простую строку в пакетном файле:

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

Это работает, но если файлов/папок ".svn" нет, пакетный файл показывает предупреждение: "Система не может найти указанный файл". Это предупреждение очень шумно, поэтому мне было интересно, как понять, что если он не найдет никаких ".svn" файлов/папок, он должен пропустить команду RD.

Обычно использование wild cards будет достаточно, но в этом случае я не знаю, как их использовать, потому что я не хочу удалять файлы/папки с расширением .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")

но он тоже не работает, он ничего не удаляет.

4b9b3361

Ответ 1

вы можете попробовать

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

Ответ 2

for /f "tokens=* delims=" %%i in ('dir /s /b /a:d *svn') do (rd /s /q "%%i")

Ответ 3

Что-то вроде этого, используя find:

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

Edit:

Я знаю, что это для linux (я прочитал bash вместо пакета). Я оставляю его здесь, чтобы помочь пользователям Linux, которые случайно попали сюда:)

Ответ 4

Собственно, этот ответ от Джеспера Ронна-Дженсена 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\" \""

Ответ 5

Bizarre sidenote: если я использую

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

вместо


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

он не только перечисляет все каталоги, заканчивающиеся на .svn, но также содержит ВСЕ ИХ СОДЕРЖАНИЕ. Это BUG в команде For, это дало мне расширение, где я не дал ему никакой дикой карты. Очень странно.

Кен

Ответ 6

Если вы хотите удалить все подпапки с именем .svn в Windows затем создайте командный файл с этим контентом:

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, чтобы случайно не иметь нежелательного эффекта.

Ответ 7

Вот мой любимый, простой и компактный:

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

FiSSH

Ответ 8

Чтобы удалить все svn файлы в окнах

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

.svn - это имя папки