2010-03-28 3 views
25

Для того, чтобы удалить все «.svn» файлы/папки/подпапки в „MyFolder“ Я использую эту простую строку в пакетном файле:Windows, пакетный файл удалить .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") 

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

+6

вы знаете о функции экспорта SVN? http://svnbook.red-bean.com/en/1.0/re10.html «экспортирует дерево чистой директории из рабочей копии» – nickf

+0

@nickf: спасибо, что рассказали мне, но мне пришлось выполнить другую задачу, в которой мне нужно для удаления файлов .svn/папок. –

+0

Просто обратите внимание, что с новыми версиями SubVersion (начиная с версии 1.7) папка метаданных .svn находится только на корневом уровне проверки, а не в каждом каталоге. – macetw

ответ

41

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

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

Отлично работает! Благодаря! –

+14

Это работает только в пакетных файлах. Когда вы используете его непосредственно в окне консоли, вы можете сбросить второй%. Таким образом, это может быть тогда: FOR/R myfolder% X IN (.svn) DO (RD/S/Q "% X" 2> nul) –

1

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

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

Edit:

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

+2

er ... * Windows * пакетный файл? – nickf

+0

sry Я читаю bash ^^. Что бы это ни было, это поможет пользователям Linux: p –

+0

@nickf: что случилось с «командным файлом Windows»? Я имею в виду файл с расширением .BAT. –

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

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

0

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

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

вместо


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

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

Кен

0

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

-1

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

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

FiSSH

-2

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

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

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

1

Собственно, этот ответ от Je sper 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\" \"" 
Смежные вопросы