85 votes

Comment supprimer l'attribut en lecture seule de manière récursive sur Windows

Je dois supprimer les attributs en lecture seule de tous les fichiers d'un répertoire de manière récursive sous Windows en utilisant la ligne de commande. Pourriez-vous fournir un exemple à ce sujet ?

112voto

Impirator Points 370

Je utiliserais la commande ATTRIB, par exemple :

attrib -r c:\dossier\*.* /s

attrib est la commande
-r est le drapeau pour supprimer les attributs en lecture seule
c:\dossier\*.* est le dossier sur lequel vous l'exécutez, plus des jokers pour tous les fichiers
/s est le drapeau pour effectuer tous les sous-répertoires et fichiers

Voici quelques autres documents et exemples pour la commande attrib : https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/attrib

24voto

stderr Points 10006

Tout d'abord, ouvrez une invite de commande. Ensuite, cd dans le répertoire où vous souhaitez commencer à appliquer les modifications d'attributs. Enfin, saisissez la commande suivante :

 attrib -R /S

Cela supprimera l'attribut en lecture seule de tous les fichiers du répertoire actuel, puis il descendra récursivement pour faire la même chose dans tous les sous-répertoires.

22voto

Just Shadow Points 323

Note: La plupart des autres réponses utilisent uniquement -r ce qui pourrait ne pas fonctionner sur les fichiers qui ont les attributs système ou caché définis.

Voici donc une solution pour supprimer de manière récursive l'attribut en lecture seule de tous les fichiers (y compris ceux qui sont systèmes ou cachés) à l'intérieur d'un répertoire :

attrib -s -h -r "c:\chemin_vers_dossier\*.*" /s /d

Description:
-s Supprime l'attribut système
-h Supprime l'attribut caché
-r Supprime l'attribut en lecture seule
/s Définit/supprime les attributs dans le dossier actuel et les sous-dossiers inclus
/d Définit/supprime les attributs des dossiers également

2voto

SlowLearner Points 21

J'ai créé ce fichier batch pour cela. Fondamentalement, ce fichier batch effacera les attributs en lecture seule dans le répertoire où il se trouve ou dans le répertoire où il se trouve et tous les sous-répertoires. J'espère que quelqu'un trouvera une utilité pour cela. Excusez tout code qui pourrait sembler "mauvais" car je viens de commencer à apprendre les fichiers batch moi-même.

@ECHO off
:begin
ECHO Souhaitez-vous uniquement supprimer les attributs en lecture seule
ECHO de ce répertoire ou de tous les sous-répertoires également?
ECHO.
ECHO [A] Ce répertoire uniquement
ECHO [B] Tous les répertoires - en cascade
ECHO [C] Annuler
SET /P actionChoice="Option(A,B,C): "
ECHO.
IF "%actionChoice%" == "A" GOTO A
IF "%actionChoice%" == "B" GOTO B
IF "%actionChoice%" == "C" GOTO C
GOTO badChoice

:A
CLS
ECHO Êtes-vous sûr de vouloir supprimer tous les attributs en lecture seule
ECHO de ce répertoire uniquement?
ECHO.
ECHO Répertoire:
ECHO.
ECHO %CD%
ECHO.
SET /P continueChoice="Continuer? (O, N): "
IF "%continueChoice%" == "N" GOTO abort
ECHO Suppression des attributs en lecture seule du répertoire local...
SET currectDirectory=%CD%
ECHO Le répertoire actuel est : %currectDirectory%
FOR %%G IN (%currectDirectory%\*) DO (
ECHO %%G
ATTRIB -R "%%G"
)
GOTO end

:B
CLS
ECHO Êtes-vous sûr de vouloir supprimer tous les attributs en lecture seule
ECHO de ce répertoire et de tous les sous-répertoires?
ECHO.
ECHO Répertoire:
ECHO.
ECHO %CD%
ECHO.
SET /P continueChoice="Continuer? (O, N): "
IF "%continueChoice%" == "N" GOTO abort
ECHO Suppression des attributs en lecture seule en cascade...
FOR /R %%f IN (*) DO (
ECHO %%f
ATTRIB -R "%%f"
)
GOTO end

:C
CLS
ECHO Annuler: aucun fichier n'a été modifié
GOTO end

:badChoice
CLS
ECHO Option inconnue
ECHO.
ECHO.
ECHO.
GOTO begin

:abort
CLS
ECHO Aucun fichier n'a été modifié
ECHO.
ECHO.
ECHO.
GOTO begin

:end
ECHO Attributs en lecture seule supprimés
PAUSE

0voto

Ste Points 981

Beaucoup d'options ici mais ce fichier de commandes prend en charge le fait de déposer des dossiers et/ou des fichiers sur le fichier de commandes lui-même.

Enregistrez ce code ci-dessous sous Read-only Off.bat.

Remarque pour savoir comment fonctionne le drop dans le code.

@echo off
title ' %~nx0 ' par stephen147
color 5F
rem Placez ceci à l'intérieur d'un dossier et exécutez-le pour supprimer l'attribut lecture seule dans le dossier racine et tout dossier ou fichier à l'intérieur.
rem Ou déposez les dossiers et/ou fichiers sur le fichier de commandes lui-même.
cd /d "%~dp0"
echo.
echo.Voulez-vous supprimer les attributs lecture seule à l'intérieur de ce dossier ? [ Ctrl + C pour annuler ]
echo.
pause
echo.
echo.%cd%
attrib -s -d -r "%cd%\*.*"
attrib -s -d -r "%cd%"
rem Cette ligne prend en charge le fait de déposer les dossiers et/ou fichiers sur le fichier de commandes lui-même.
attrib -r "%*"
echo.
echo.Fait
timeout /T 5
EXIT

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X