web-dev-qa-db-fra.com

Outil de ligne de commande pour supprimer le dossier avec un nom spécifié récursivement dans Windows?

Je veux supprimer chaque "_svn" dans chaque dossier et sous-dossier ...

Par exemple

 c:\
 proyect1 
 _svn 
 images 
 _svn 
 bannière 
 _svn 
 boutons 
 _svn 
 

Ensuite, je lance quelque chose comme

rm-recurse c:\proyect1 _svn

Et je devrais obtenir:

 c:\
 proyect1 
 images 
 bannière 
 boutons 

L'idéal serait un petit EXE autonome ou quelque chose comme ça.

- Merci Grant, dès que j'ai posté la question, j'ai vu SVN de la documentation sur la commande d'exportation SVN, mais je veux aussi supprimer le dossier _vti_ * Visual Studio crée, donc j'explorerai également la solution for.

69
opensas

Similaire au "pour" de BlackTigerX, j'allais suggérer

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

130
JMD

Il est temps d'en apprendre PowerShell ; o)

Get-ChildItem -path c:\projet -Include '_svn' -Recurse -force | Remove-Item -force -Recurse

La première partie trouve chaque dossier _svn de manière récursive. La force est utilisée pour trouver des dossiers cachés. La deuxième partie permet de supprimer ces dossiers et leur contenu. La commande de suppression est fournie avec un paramètre "whatif" pratique qui permet de prévisualiser ce qui sera fait.

PowerShell est disponible pour Windows XP et Windows Vista. Il est présent sur Windows 7 et sur Windows Server 2008 R2 par défaut.

C'est un produit MS, c'est gratuit et ça bouge!

28
Cédric Rup

Pour l'inclusion/l'invocation à partir d'un fichier BATCH, utilisez (par exemple pour supprimer le dossier Debug and Release):

for /d /r . %%d in (Debug Release) do @if exist "%%d" echo "%%d" && rd /s/q "%%d"

double % sont nécessaires dans un fichier de commandes pour fonctionner comme caractères d'échappement. Sinon, il signale une erreur de syntaxe.

Merci.

22
Rajesh Gautam PhD
for /f "usebackq" %d in (`"dir _svn /ad/b/s"`) do rd /s/q "%d"

http://ebersys.blogspot.com/2008/07/recursively-delete-svn-folders-easy-way.html

14
BlackTigerX

Sous Windows? Si vous utilisez tortoiseSVN, vous pouvez utiliser la commande d'exportation pour exporter une copie du projet sans les dossiers .svn/_svn.

10
Grant
import os
import shutil

curdir = os.path.abspath(os.path.dirname(__file__))

def removedir(dirname, name = ".svn"):
    if os.path.isdir(dirname):
        for file in os.listdir(dirname):
            if os.path.isdir(os.path.join(dirname, file)) and file == name:
                thedir = os.path.join(dirname, name)
                shutil.rmtree(thedir)
                print ".",
            else:
                removedir(os.path.join(dirname, file))

Je pense que vous pouvez essayer ce script Python, qui fonctionnera sous n'importe quel système d'exploitation si vous avez installé Python.

4
Zhu Tao

Une autre option de Forum SVN : utilisez XCopy avec un fichier qui contient la liste des fichiers/répertoires à exclure (.svn ou _svn dans ce cas)

XCopy C:\VersionedFolder C:\UnVersionedFolder /EXCLUDE:C:\No.SVN.txt /E /C /I /F /R /Y
3
Teorist

Ici ... avec FreeCommander ou TotalCommander

http://www.broobles.com/blog/posts/36

socendani

2
Dani