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? P>
5 Réponses :
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"
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.
Que diriez-vous:
@echo off for /d %%a in (certain_string*) do rd /s %%a
Aie. J'ai besoin de plus de sommeil ... ou du thé ... (frappe la tête sur la table) i>
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 code> 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 code> 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" code> mais il ne semble pas fonctionner.
Ceci est la réponse complète que vous recherchez: où, évidemment, vous devez remplacer Ceci supprime récursivement fort> comme vous l'avez demandé (je veux dire que cela passe à travers tous les dossiers et les sous-dossiers). P> P> certain_string code> avec la chaîne Vos dossiers commencent par. P>
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 " code>. Explication:
%% ~ xx code>
est égal au nom complet du répertoire. if / i .. NEQ "EN.LPROJ" code> Filtre tous les annuaires qui sont égaux à
"fr.lproj" code> (
/ i code> = cas- insensible). Ifs peut être imbriqué . En fin de compte, j'ai récursivement supprimé tous les annuaires se terminant par
.lproj code>, à l'exception de
en.lproj code> et
anglais.lproj code>.
FOR /F "tokens=*" %i IN ('DIR **[[SearchTerm]]** /A:D /s /b') do rd /S / Q %i
RM -RF - "Nom du répertoire" P>
ex: rm -rf - "-2096378" p>
La commande ci-dessus supprime les dossiers / répertoires commençant par - ou des caractères génériques P>