12
votes

Supprimer récursivement tous les dossiers commençant par

J'ai besoin d'écrire une commande dans un fichier .bat qui supprime récursivement tous les dossiers commençant par une certaine chaîne. Comment puis-je y parvenir?


0 commentaires

5 Réponses :


1
votes

inachevé, je pense. Si vous vouliez dire "de descendre de manière récursive une hiérarchie de répertoire pour supprimer tous les dossiers commençant par une chaîne donnée", vous pourriez suffire:

for /f "delims=" %%x in ('dir /b /ad abc*') do rd /s /q "%%x"


3 commentaires

Rössel: Est-ce que cela fonctionne? Cela ne fonctionne pas lorsque vous essayez de supprimer des répertoires se terminant par ".delme", ​​j'ai essayé votre suggestion comme ceci: pour / f "Delims =" %% x in ('Dir / B / AD * .Delme') do rd / S / Q "%% x" Mais il ne semble pas fonctionner.


@MARCO: Pas besoin de crier. En cas de doute, posez une nouvelle question et indiquez vos problèmes clairement et en détail. Quelque chose comme »ne fonctionne pas« est généralement un rapport de mauvais problème.


Rossel: N'était pas crié, je viens d'écrire en majuscule. Je vais demander une nouvelle question alors.



4
votes

Que diriez-vous:

@echo off
for /d %%a in (certain_string*) do rd /s %%a


6 commentaires

Aie. J'ai besoin de plus de sommeil ... ou du thé ... (frappe la tête sur la table)


HMM, bien que cela ne se recueille probablement pas dans l'arborescence dirigeable et de trouver des dossiers plus profonds correspondant aux critères, non? (Mes solutions ne le font pas aussi, mais je viens de réaliser que c'est ce que l'OP signifiait).


J'ai dû développer cela un peu de ma tentative simple originale, car rd ne semble pas développer des caractères génériques en soi.


Pour rechercher récursivement des annuaires commençant par un préfixe, vous pourrez peut-être utiliser pour / r ou une certaine combinaison de ceux-ci.


Oh, pas gentil. Je n'ai pas essayé non plus que je n'ai actuellement aucun répertoire couché pour épouser :-)


@Greg Hewgill: cela a-t-il travaillé? Cela ne fonctionne pas lorsque vous essayez de supprimer des annuaires se terminant par ".Delme", ​​j'ai essayé votre suggestion comme ceci: pour / d %% x in (* .Delme) do rd / s / q "%% x" mais il ne semble pas fonctionner.



42
votes

Ceci est la réponse complète que vous recherchez: xxx

où, évidemment, vous devez remplacer certain_string avec la chaîne Vos dossiers commencent par.

Ceci supprime récursivement comme vous l'avez demandé (je veux dire que cela passe à travers tous les dossiers et les sous-dossiers).


2 commentaires

Rien d'autre que la réponse de @ Maorco a fonctionné pour moi. Malheureusement, il n'a aucun vote autre que le mien. :(


Merci. J'ai dû exclure deux répertoires, ce qui a entraîné cette commande: pour / d / r %% x in (* .lproj) faire si / i "%% ~ xnx" NEQ "EN.LPROJ" si / i / i / i / i / i " %% ~ xnx "neq" anglais.lproj "rd / s / q" %% ~ fx ". Explication: %% ~ xx est égal au nom complet du répertoire. if / i .. NEQ "EN.LPROJ" Filtre tous les annuaires qui sont égaux à "fr.lproj" ( / i = cas- insensible). Ifs peut être imbriqué . En fin de compte, j'ai récursivement supprimé tous les annuaires se terminant par .lproj , à l'exception de en.lproj et anglais.lproj .



-1
votes
FOR /F "tokens=*" %i IN ('DIR **[[SearchTerm]]** /A:D /s /b') do rd /S / Q %i

0 commentaires

0
votes

RM -RF - "Nom du répertoire"

ex: rm -rf - "-2096378"

La commande ci-dessus supprime les dossiers / répertoires commençant par - ou des caractères génériques


0 commentaires