Пакетный файл Windows для удаления файлов и папок .svn - PullRequest
25 голосов
/ 28 марта 2010

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

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

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

Ответы [ 8 ]

41 голосов
/ 28 марта 2010

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

FOR /R myfolder %%X IN (.svn) DO (RD /S /Q "%%X" 2>nul)
4 голосов
/ 14 декабря 2010
for /f "tokens=* delims=" %%i in ('dir /s /b /a:d *svn') do (rd /s /q "%%i")
1 голос
/ 15 апреля 2016

На самом деле, этот ответ от Jesper Rønn-Jensen в http://justaddwater.dk/2011/03/01/easy-delete-all-svn-subfolders-in-windows-explorer/

Я думал, что мне будет намного легче поделиться. Я конвертирую несколько проектов из .SVN в .GIT, так что это было здорово. Он добавляет пункт меню в проводник, чтобы вы могли удалить папки. Создайте файл .reg и импортируйте его.

enter image description here

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\" \""
1 голос
/ 28 марта 2010

Что-то подобное, используя find:

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

Edit:

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

0 голосов
/ 07 апреля 2014

Для удаления всех файлов SVN в Windows

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

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

0 голосов
/ 04 января 2013

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

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

FiSSH

0 голосов
/ 25 ноября 2012

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

0 голосов
/ 13 июля 2012

Причудливый sidenote: если я использую

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

вместо


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

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

Ken

...