Comment supprimer un attribut en lecture seule de manière récursive sous Windows 7

71

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

Mert Nuhoglu
la source
1
Sorti de ma tête sans avoir testéattrib /S -R
nixda

Réponses:

89

J'utiliserais la commande ATTRIB, par exemple:

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

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

Voici encore de la documentation et des exemples pour la commande attrib: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/attrib

Callen L
la source
17
Ajoutez un /dsi vous souhaitez que les dossiers réels soient également traités.
LawrenceC
2
Notez que cela ne fonctionne pas avec les fichiers marqués comme "caché" ou "système". Afin de supprimer l'attribut en lecture seule de ces fichiers, vous devez également supprimer les autres attributs (par exemple attrib -h -r).
Excelcius
2
si le chemin contient des espaces, insérez "" comme: attrib -r "c: \ Fichiers de programme (x86) \ SmartGit *. *" / s
Daniel Hári
La page à ce lien n'existe plus.
Broots Waymb le
25

Tout d'abord, ouvrez une invite de commande. Puis cddans le répertoire où vous souhaitez commencer à appliquer les modifications d'attribut. Enfin, entrez la commande suivante:

 attrib -R /S

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

stderr
la source
9

Remarque: la plupart des autres réponses n'utilisent que des solutions -rqui pourraient ne pas fonctionner avec les fichiers comportant un ensemble d'attributs systemou hidden.

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ème ou cachés) dans un répertoire:

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

Description:
-s Supprimer l'attribut système Supprimer l'attribut
-hmasqué Supprimer l'attribut en
-rlecture seule /sDéfinir / supprimer des attributs dans le dossier actuel, y compris les sous-dossiers /dDéfinir / supprimer les attributs des dossiers

Juste ombre
la source
2
Cela devrait être défini comme la meilleure réponse.
Julius
2

J'ai créé ce fichier batch pour le faire. Fondamentalement, ce fichier de commandes efface les attributs en lecture seule dans le répertoire ou dans le répertoire dans et dans tous les répertoires inférieurs. J'espère que quelqu'un en trouve une utilité. Excusez tout code qui peut sembler "pauvre" car je commence tout juste à apprendre moi-même les fichiers de commandes.

@ECHO off
:begin
ECHO Would you like to only remove read only attributes
ECHO from this director or from all the sub directores as
ECHO well?
ECHO.
ECHO [A] This directory only
ECHO [B] All directories - cascading
ECHO [C] Cancel
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 Are you sure you want to remove all read-only
ECHO attributes from this directory only?
ECHO.
ECHO Directory:
ECHO.
ECHO %CD%
ECHO.
SET /P continueChoice="Continue? (Y, N): "
IF "%continueChoice%" == "N" GOTO abort
ECHO Removing Read Only Attributes From Local Directory...
SET currectDirectory=%CD%
ECHO Current directory is: %currectDirectory%
FOR %%G IN (%currectDirectory%\*) DO (
ECHO %%G
ATTRIB -R "%%G"
)
GOTO end

:B
CLS
ECHO Are you sure you want to remove all read-only
ECHO attributes from this directory and all sub-directories?
ECHO.
ECHO Directory:
ECHO.
ECHO %CD%
ECHO.
SET /P continueChoice="Continue? (Y, N): "
IF "%continueChoice%" == "N" GOTO abort
ECHO Removing Read Only Attributes Cascading...
FOR /R %%f IN (*) DO (
ECHO %%f
ATTRIB -R "%%f"
)
GOTO end

:C
CLS
ECHO Cancel: no files have been changed
GOTO end

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

:abort
CLS
ECHO No files have been changed
ECHO.
ECHO.
ECHO.
GOTO begin

:end
ECHO Read only attributes removed
PAUSE
SlowLearner
la source
0

Beaucoup d'options ici, mais ce fichier de commandes prend en charge la suppression de dossiers / s et / ou de fichiers / s dans le fichier de commandes lui-même.

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

Notez comment le bit de suppression fonctionne dans le code.

@echo off
title ' %~nx0 ' by stephen147
color 5F
rem Place this inside a folder and run to remove the read-only attribute in the root folder and any folders or files within.
rem Or drop the folder/s and/or file/s to the batch file itself.
cd /d "%~dp0"
echo.
echo.Do you want to remove the read-only attributes inside this folder ? [ Ctrl + C to cancel ]
echo.
pause
echo.
echo.%cd%
attrib -s -d -r "%cd%\*.*"
attrib -s -d -r "%cd%"
rem This line supports dropping the folder/s and/or file/s to the batch file itself.
attrib -r "%*"
echo.
echo.Done
timeout /T 5
EXIT
Stephen Sherry
la source