2010-03-28 13 views
25

Con el fin de eliminar todos los archivos "" .svn/carpetas/subcarpetas en 'myfolder' Yo uso esta línea simple en un archivo por lotes:archivo por lotes de Windows para eliminar archivos y carpetas .svn

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

Estos trabajos , pero si no hay archivos/carpetas ".svn", el archivo por lotes muestra una advertencia que dice: "El sistema no puede encontrar el archivo especificado". Esta advertencia es muy ruidosa, así que me preguntaba cómo hacer que entienda que si no encuentra ningún archivo/carpeta ".svn" debe omitir el comando RD.

Por lo general, el uso de comodines sería suficiente, pero en este caso no sé cómo usarlos, porque no deseo borrar los archivos/carpetas con extensión Svn, pero quiero eliminar la archivos/carpetas con el nombre exactamente ".svn", por lo que si hago esto:

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

no sería borrar archivos/carpetas con el nombre exactamente ".svn" más. Probé también esto:

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

pero no funciona bien, se borra nada.

+6

que son conscientes de la función de exportación de SVN? http://svnbook.red-bean.com/en/1.0/re10.html "exporta un árbol de directorios limpio de la copia de trabajo" – nickf

+0

@nickf: gracias por decirme, pero tenía que realizar una tarea diferente cuando lo necesitaba para eliminar los archivos/carpetas .svn. –

+0

Solo una nota, que con las nuevas versiones de SubVersion (desde 1.7), la carpeta de metadatos .svn está solo en el nivel raíz de la caja, no en cada directorio. – macetw

Respuesta

41

puede probar

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

¡Funciona muy bien! ¡Gracias! –

+14

Esto funciona solo en archivos por lotes. Cuando lo usa directamente en una ventana de la consola, puede soltar el segundo%. Entonces debería ser: FOR/R myfolder% X IN (.svn) DO (RD/S/Q "% X" 2> nul) –

1

Algo así como que el uso de hallazgo:

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

Editar:

Sé que esto es para Linux (I Lee Bash en lugar de por lotes). Me voy de aquí para ayudar a los usuarios de Linux que terminarían-al azar aquí :)

+2

er ... * Windows * batch file? – nickf

+0

sry, leí bash ^^. Lo que sea, esto ayudará a los usuarios de linux: p –

+0

@nickf: ¿qué pasa con "Windows batch file"? Me refiero a un archivo con la extensión .BAT. –

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

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

0

sidenote extraño: si uso

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

en lugar de


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

no sólo ¿Enumera todos los directorios que terminan en .svn, también enumera TODOS SUS CONTENIDOS? Este es un BUG en el comando For, me dio una expansión donde no le di comodín. Muy extraño.

Ken

0

Si desea eliminar todas las subcarpetas nombradas Svn en Windows continuación, crear el archivo por lotes con este contenido:

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

guardarlo en un archivo de del_All_Dot_SVN_Folders.cmd . Ejecutarlo. Terminaste.

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

Recuerde el código anterior ha .svn mientras que el código en el enlace sólo ha svn * así que es mejor tener la Svn tener no por casualidad efecto no deseado.

-1

Aquí es mi favorito, es simple y compacto:

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

Fissh

-2

Para eliminar todos los archivos de SVN en ventanas

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

.svn es el nombre de la carpeta

1

En realidad, esta respuesta es de Je sper Rønn-Jensen en http://justaddwater.dk/2011/03/01/easy-delete-all-svn-subfolders-in-windows-explorer/

Pensé que era mucho más fácil compartirlo. Estoy convirtiendo varios proyectos de .SVN a .GIT, así que esto fue genial. Agrega un elemento de menú al Explorador para que pueda eliminar las carpetas. Cree un archivo .reg e impórtelo.

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\" \"" 
Cuestiones relacionadas