Utilisez des boucles imbriquées comme celle-ci: Modifiez simplement les noms de dossiers dans les dossiers de votre choix.
@echo off
for /D /R %%D in (nbproject Folder2 Folder3) do if exist "%%~fD" (
pushd "%%~fD"
for /R %%F in (*) do if exist "%%~fF" attrib -R "%%~fF" /D
popd
)
Une doublure:
for /D /R %%D in (nbproject Folder2 Folder3) do @if exist "%%~fD" @cd /D "%%~fD" && for /R %%F in (*) do @if exist "%%~fF" attrib -R "%%~fF" /D
Démantelons également votre première ligne de code pour des raisons où il peut échouer.
- Vous êtes en redirigeant la sortie de
dir
en attrib
et en utilisant la variable d
. Un seul est nécessaire. Utilisez le symbole &
si vous utilisez la variable d
avec attrib
sinon supprimez la variable d
.
- Utilisez l'option
/b
avec la commande dir
, en particulier lors de l'acheminement de sa sortie.
- La commande for n'a pas besoin de
.
. Le répertoire en cours est supposé lorsqu'il n'est pas spécifié.
- Lorsque vous citez une variable de boucle, utilisez le tilde
~
pour supprimer les cotations existantes afin que les guillemets doubles ne se produisent pas.
- L'option
/S
n'est pas nécessaire avec attrib
lors de son utilisation dans dir
.
Exemple:
for /d /r %%d in (nbproject) do @if exist "%%~d" dir "%%~d" /B /S | attrib -R /D
Merci pour l'explication, mais ce qui rend tous les fichiers inscriptibles, dans tous les dossiers du même niveau de hiérarchie des nbproject. J'ai essayé quelques variations mais je n'ai pas pu le faire. –
@BasitAnwer J'ai corrigé mon code pour ne rechercher que le répertoire en question. Cependant, le code que vous avez fixé fonctionne très bien pour moi. Tout ce que vous avez à faire est d'ajouter chaque nom de dossier à la liste délimitée par des espaces dans la première parenthèse de boucles. –
Je suis désolé, mais le code que vous avez corrigé n'a pas fonctionné ... après avoir essayé quelques-uns, j'ai réussi à le faire fonctionner ==== pour/d/r. %% d dans (nbproject) do @if existe-t-il? "%% ~ d" dir "%% d"/S | attrib -R "%% ~ d" \ *. */S/D –