Come rimuovere ricorsivamente l'attributo di sola lettura su Windows 7


71

Devo rimuovere gli attributi di sola lettura di tutti i file in una directory ricorsivamente su Windows 7 utilizzando la riga di comando. Potresti fornire un esempio al riguardo?


1
Fuori di testa senza testattrib /S -R
— nixda,

Risposte:


89

Vorrei usare il comando ATTRIB, ad esempio:

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

attribè il comando
-rè il flag per rimuovere gli attributi di sola lettura
c:\folder\*.*è la cartella su cui lo si sta eseguendo, inoltre i caratteri jolly per tutti i file
/sè il flag per fare tutte le directory e i file secondari

Ecco qualche altra documentazione ed esempi per il comando attrib: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/attrib


17
Aggiungi a /dse vuoi che elabori anche le cartelle effettive.
— LawrenceC,

2
Si noti che questo non funziona con i segni dei file come "nascosti" o "sistema". Per rimuovere l'attributo di sola lettura da quei file è necessario rimuovere anche gli altri attributi (ad esempio attrib -h -r).
— Excelcius

2
se il percorso contiene spazi inseriti in "" like: attrib -r "c: \ Programmi (x86) \ SmartGit *. *" / s
— Daniel Hári,

La pagina a quel link non esiste più.
— Broots Waymb

25

Innanzitutto, apri un prompt dei comandi. Quindi cdnella directory in cui si desidera iniziare ad applicare le modifiche all'attributo. Infine, inserisci il seguente comando:

 attrib -R /S

Ciò rimuoverà l'attributo di sola lettura da tutti i file nella directory corrente, quindi verrà eseguito il down down per fare la stessa cosa in tutte le sottodirectory.


9

Nota: la maggior parte delle altre risposte utilizza solo quelli -rche potrebbero non funzionare su file che hanno systemo hiddenattributi impostati.

Quindi ecco una soluzione per rimuovere ricorsivamente l'attributo di sola lettura da tutti i file (compresi quelli che sono di sistema o nascosti) all'interno di una directory:

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

Descrizione:
-s Rimuovi attributo di sistema Rimuovi attributo
-hnascosto Rimuovi attributo
-rdi sola lettura /sImposta / rimuovi attributi nella cartella corrente e includendo le sottocartelle /dImposta / rimuovi anche attributi di cartelle


2
Questo dovrebbe essere impostato come la migliore risposta.
— Giulio

2

Ho creato questo file batch per farlo. Fondamentalmente questo file batch cancellerà gli attributi di sola lettura nella directory in cui si trova o nella directory in e in tutte le directory inferiori. Spero che qualcuno lo trovi utile. Scusa qualsiasi codice che può sembrare "scarso" dato che sto iniziando a imparare da solo i file batch.

@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

Molte opzioni qui, ma questo file batch supporta il rilascio di cartelle / ee / o file / i nel file batch stesso.

Salva questo codice qui sotto in Read-only Off.bat.

Nota per come funziona il bit di rilascio all'interno del codice.

@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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.