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.