Cómo eliminar el atributo de solo lectura de forma recursiva en Windows 7

71

Necesito eliminar los atributos de solo lectura de todos los archivos en un directorio de forma recursiva en Windows 7 usando la línea de comandos. ¿Podría dar un ejemplo al respecto?

Mert Nuhoglu
fuente
1
Fuera de mi cabeza sin pruebasattrib /S -R
nixda

Respuestas:

89

Usaría el comando ATTRIB, por ejemplo:

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

attribes el comando
-res el indicador para eliminar atributos de solo lectura
c:\folder\*.*es la carpeta en la que lo está ejecutando, además de los comodines para todos los archivos
/ses el indicador para hacer todos los subdirectorios y archivos

Aquí hay más documentación y ejemplos para el comando attrib: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/attrib

Callen L
fuente
17
Agregue un /dsi desea que también procese las carpetas reales.
LawrenceC
2
Tenga en cuenta que esto no funciona con marcas de archivos como "ocultas" o "sistema". Para eliminar el atributo de solo lectura de esos archivos, también debe eliminar los otros atributos (por ejemplo attrib -h -r).
Excelcius
2
si la ruta contiene espacios colocados en "" como: attrib -r "c: \ Archivos de programa (x86) \ SmartGit *. *" / s
Daniel Hári
La página en ese enlace ya no existe.
Broots Waymb
25

Primero, abra un símbolo del sistema. Luego, cden el directorio donde desea comenzar a aplicar los cambios de atributos. Finalmente, ingrese el siguiente comando:

 attrib -R /S

Eso eliminará el atributo de solo lectura de todos los archivos en el directorio actual, luego se repetirá para hacer lo mismo en todos los subdirectorios.

stderr
fuente
9

Nota: La mayoría de las otras respuestas están usando solo lo -rque podría no funcionar en archivos que tienen systemo hiddenatributos establecidos.

Entonces, aquí hay una solución para eliminar recursivamente el atributo de solo lectura de todos los archivos (incluidos los que están ocultos o del sistema) dentro de un directorio:

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

Descripción:
-s Eliminar atributo del sistema Eliminar atributo
-hoculto Eliminar atributo
-rde solo lectura /sEstablecer / eliminar atributos en la carpeta actual e incluir subcarpetas /dEstablecer / eliminar atributos de carpetas también

Solo sombra
fuente
2
Esto debe establecerse como la mejor respuesta.
Julio
2

Creé este archivo por lotes para hacer esto. Básicamente, este archivo por lotes borrará los atributos de solo lectura en el directorio en el que está o el directorio en el que está y todos los directorios inferiores. Espero que alguien lo use. Disculpe cualquier código que pueda parecer "pobre" ya que estoy empezando a aprender archivos por lotes.

@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
Aprendiz lento
fuente
0

Hay muchas opciones aquí, pero este archivo por lotes admite soltar carpetas / s y / o archivos / s en el archivo por lotes.

Guarde este código a continuación en Read-only Off.bat.

Tenga en cuenta cómo funciona el bit de colocación dentro del código.

@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
fuente