2013-10-03 15:49:37 +0000 2013-10-03 15:49:37 +0000
72
72

Como remover recursivamente os atributos só de leitura no Windows 7

Preciso de remover os atributos só de leitura de todos os ficheiros sob um directório recursivamente no Windows 7 usando a linha de comando. Poderia dar um exemplo sobre isto?

Respostas (5)

91
91
91
2013-10-03 15:56:07 +0000

Eu usaria o comando ATTRIB, por exemplo:

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

attrib é o comando -r é a bandeira para remover atributos só de leitura c:\folder\*.* é a pasta onde está a correr, mais wildcards para todos os ficheiros /s é a bandeira para fazer todos os subdirectórios e ficheiros

Aqui estão mais alguns documentos e exemplos para o comando attrib: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/attrib

25
25
25
2013-10-03 15:57:44 +0000

Primeiro, abrir um prompt de comando. Depois cd no directório onde se pretende começar a aplicar as alterações de atributos. Finalmente, introduza o seguinte comando:

attrib -R /S

Que removerá o atributo apenas leitura de todos os ficheiros do directório actual, depois voltará a fazer a mesma coisa em todos os subdirectórios.

& - Technet - attrib

11
11
11
2017-04-13 11:44:22 +0000

Nota: A maioria das outras respostas estão a utilizar apenas -r que podem não funcionar em ficheiros que tenham system ou hidden atributos definidos.

Portanto, aqui está uma solução para remover recursivamente os atributos só de leitura de todos os ficheiros (incluindo os que são sistema ou ocultos) dentro de um directório:

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

Descrição: -s Remover atributo do sistema -h Remover atributo oculto -r Remover atributo só de leitura/s Definir/remover atributos da pasta actual e incluindo subpastas/d Definir/remover também atributos das pastas

2
2
2
2017-07-17 15:40:44 +0000

Criei este ficheiro de lote para o fazer. Basicamente, este ficheiro de lote irá limpar apenas atributos de leitura no directório em ou no directório e em todos os directórios inferiores. Espero que alguém encontre uma utilização para ele. Desculpe qualquer código que possa parecer “pobre”, pois eu próprio estou apenas a começar a aprender ficheiros de lote.

@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
0
0
0
2019-07-14 16:54:55 +0000

Muitas opções aqui, mas este ficheiro de lote suporta a(s) pasta(s) e/ou ficheiro(s) de largada para o próprio ficheiro de lote.

Guardar este código abaixo para Read-only Off.bat.

Nota sobre como funciona o bit de gota dentro do 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