Команда для рекурсивного видалення всіх каталогів .svn у Windows


75

У мене є каталог із багатьма підкаталогами. У кожній папці є папка диверсії (.svn).

Чи є у вікні команда, яка пройде кожну папку та підкаталог та видалить папку .svn?

Або мені доведеться створювати сценарій або робити це вручну?


4
Якщо він не повинен бути написаний за сценарієм, я просто шукав би ".svn" у кореневій папці, потім вибрав усі результати та видалив.
JB Nizet

1
Вас також може зацікавити команда svn export ( svnbook.red-bean.com/en/1.0/re10.html ), яка копіює каталог в інше місце, але без усіх каталогів .svn.
JB Nizet

@JB Nizet: Вам слід створити відповідь, щоб люди могли голосувати, а не додавати коментарі. Коментарі призначені для коментування питання, наприклад, коли щось незрозуміле
Сандер Рейкен

можливо дублікат [Видалення .svn файли з усіх каталогів] ( stackoverflow.com/questions/1301203 / ... )
Sander Rijken

1
@ user538442 Будь ласка, подумайте про зміну прийнятої відповіді
Брайан Вебстер,

Відповіді:


30

Використовуйте svn exportкоманду, щоб експортувати робочу копію Subversion у нову "чисту" структуру каталогів, яка не має .svnкаталогів.


5
Це може бути не те, що він шукає. Я хотів те саме, щоб я міг перевірити якийсь вже модифікований код в іншому розташуванні SVN.
Боббі Кеннон,

Ви можете зробити це післяsvn export
Сандера Рейкена

3
Ця команда не бере існуючі файли з вашого диска, натомість створює копію найновішої версії вашого сховища. Вам слід було скористатисяsvn export WCPath NewPath
Sander Rijken

4
'svn export' добре працює, якщо у вас є доступ до вихідного сховища. Іноді я отримую дампи коду, що містять каталоги .svn, які вказують на сховища, до яких я не можу отримати доступ. У цьому випадку один із варіантів командного файлу або PowerShell - це шлях.
Кевін

8
Це не відповідає на актуальне запитання. Наприклад, я отримав дерево папок, але не використовую SVN. Тож команда «експортувати» мені недоступна.
Rid Iculous

174

Створіть пакетний файл litte з наступним рядком і запустіть його з батьківської папки, в якій знаходяться каталоги .svn.

FOR /F "tokens=*" %%G IN ('DIR /B /AD /S *.svn*') DO RMDIR /S /Q "%%G"

Ви також можете оформити рядок нижче прямо з командного рядка:

FOR /F "tokens=*" %G IN ('DIR /B /AD /S *.svn*') DO RMDIR /S /Q "%G"

1
Дуже дякую. ось що я точно хочу. я з якоїсь причини відключився від свого репозиторію svn і не мав часу робити дослідницьку роботу з цієї причини. тепер я використовую Filezilla для завантаження повного проекту без будь-якої папки .svn за допомогою цієї команди. ще раз спасибі
MK Garwa

Дякую за це. Дуже вдячний. Мені дали дерево папок із .svn, але я фактично не використовую його. Пошук у програмі Win .svn (незалежно від того, ввімкнено чи вимкнено показ прихованих файлів) не дав нульових результатів. Підказка командного рядка зробила свою справу!
Rid Iculous

Приголомшливо Найпростіший і ефективний спосіб. Шукали в Google за запитом "windows cmd видаляє папки рекурсивно", але я насправді хотів видалення .svn, любов, коли пошукова система коригує моє бажання до цього моменту :)
Armfoot

1
Дякую! Порада: щоб відкрити cmd вже у потрібному зсуві папки + клацніть папку з провідника Windows і виберіть "відкрити тут командне вікно". на cmd.exe ви можете просто клацнути правою кнопкою миші, щоб вставити 2-ю команду @ Ajit / @ izilotti shared. Працює як шарм (win7)
Хорхе Орпінель

4
Ця відповідь повинна бути "Найкраща відповідь"
mujaffars

48

Зробіть це в PowerShell.

ПРИМІТКА: Це рекурсивно, тому переконайтесь, що ви знаходитесь у правильному каталозі!

gci -fil '.svn' -r -force | ri -r -force

Ось решта мого сценарію очищення вихідного дерева.

gci -fil 'bin' -r -force | ri -r -force
gci -fil 'obj' -r -force | ri -r -force
gci -fil '_ReSharper*' -r -force | ri -r -force
gci -fil '*.suo' -r -force | ri -r -force
gci -fil '*.user' -r -force | ri -r -force

Примітка: Якщо у вас є Шляхи, що містять більше 260 символів, ви отримаєте RemoveItem PathTooLongException.
bluel,

10

Якщо ви хочете видалити всі підпапки з іменем .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, щоб випадково не мати небажаного ефекту.


9

Просто введіть .svn у вікно пошуку Провідника файлів, а потім виберіть та видаліть усі результати пошуку (див. Коментар JB Nizet). Цей метод, звичайно, також може бути використаний для швидкого видалення каталогів obj та bin, наприклад, при організації SVN-архівів.

Хоча OP попросив рішення командного рядка, він також вказав використання Windows і розглянув можливість видалення вручну, тому метод Провідника файлів все одно можна розглянути, особливо тому, що це найшвидший метод і не покладається на такі інструменти, як експорт svn.

Хоча OP вже вибрав прийняту відповідь, ця відповідь може бути корисною для інших. Принаймні це було корисно мені, давньому користувачеві Linux / Windows, який віддає перевагу командним рядкам і вперше дізнався про поле пошуку за допомогою цього повідомлення :-)

скріншот провідника з полем пошуку



0

Я знаю, що пізно відповідати на це, але, мабуть, існує простий спосіб, ЯКЩО у вас є eclipse та плагін svn, встановлений на вашому eclipse. Клацніть правою кнопкою миші на проекті, перейдіть до Team-> disconnect Відкриється спливаюче вікно, де ви виберете перший варіант: "Також видаліть метаінформацію SVN із файлової системи." Це автоматично видалить усі папки SVN, а також файли властивостей svn, про які ви можете забути іноді під час видалення лише папок .svn!


-1

Як важливий момент, якщо ви хочете запустити оболонку видалити папки .svn, вам може знадобитися -depth аргумент для запобігання команди пошуку входу в каталог , який був просто знищений і показуючи дурні повідомлення про помилки , як , наприклад ,

"find: ./.svn: No such file or directory"

Щоб позбутися цієї помилки, ви можете використовувати команду find наступним чином:

cd [dir_to_delete_svn_folders]
find . -depth -name .svn -exec rm -fr {} \;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.