web-dev-qa-db-fra.com

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

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?

62
Mert Nuhoglu

J'utiliserais la commande ATTRIB, par exemple:

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

attrib est la commande
-r is l'indicateur de suppression des attributs en lecture seule
c:\folder\*.* est le dossier sur lequel vous l'exécutez, plus des caractères génériques pour tous les fichiers
/s est l'indicateur permettant de créer tous les sous-répertoires et fichiers.

Voici quelques exemples de documentation et d’exemples supplémentaires pour la commande attrib: http://www.Microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/attrib.mspx?mfr=true

78
Callen L

Tout d'abord, ouvrez une invite de commande. Puiscddans 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.

22
stderr

Remarque: La plupart des autres réponses utilisent uniquement -r, ce qui pourrait ne fonctionne pas sur les fichiers dotés d'attributs system ou hidden.

Voici donc une solution pour supprimer récursivement l'attribut en lecture seule de all 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

La description:
-s Supprimer l'attribut système
-h Supprimer l'attribut masqué
-r Supprimer l'attribut en lecture seule /s Définir/supprimer les attributs dans le dossier actuel et les sous-dossiers inclus /d Définir/supprimer également les attributs des dossiers

6
Just Shadow

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 "médiocre" 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
2
SlowLearner