Як видалити атрибут лише для читання рекурсивно в Windows 7


71

Мені потрібно видалити атрибути лише для читання всіх файлів у каталозі рекурсивно в Windows 7 за допомогою командного рядка. Чи можете ви надати приклад на це?


1
З голови без тестуванняattrib /S -R
nixda

Відповіді:


87

Я використовував би команду ATTRIB, наприклад:

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

attribце команда
-r- прапор для видалення атрибутів лише для читання
c:\folder\*.*- це папка, в якій ви її запускаєте, плюс підстановки для всіх файлів
/s- це прапор для всіх підкаталогів та файлів

Ось ще додаткова документація та приклади команди attrib: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/attrib


16
Додати, /dякщо ви хочете, щоб він також обробляв фактичні папки.
LawrenceC

2
Зауважте, що це не працює з файлами, позначеними як "приховані" або "системні". Щоб вилучити атрибут лише для читання з цих файлів, ви також повинні видалити інші атрибути (наприклад attrib -h -r).
Excelcius

2
якщо шлях містить пробіли, поставлені в "" як: attrib -r "c: \ Program Files (x86) \ SmartGit *. *" / s
Daniel Hári

Сторінка за цим посиланням більше не існує.
Broots Waymb

25

Спочатку відкрийте командний рядок. Потім cdу каталог, де ви хочете почати застосовувати зміни атрибутів. Нарешті, введіть таку команду:

 attrib -R /S

Це видалить атрибут лише для читання з усіх файлів у поточному каталозі, тоді він повториться, щоб зробити те ж саме у всіх підкаталогах.


9

Примітка. Більшість інших відповідей використовують лише ті, -rякі можуть не працювати у файлах, у яких встановлені systemабо hiddenатрибути.

Отже, ось рішення для рекурсивного видалення атрибута лише для читання з усіх файлів (включаючи ті, що є системними або прихованими) всередині каталогу:

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

Опис:
-s Видалити системний атрибут
-hВидалити прихований атрибут
-rВидалити атрибут лише для читання /sВстановити / видалити атрибути в поточній папці та включаючи вкладені папки /dВстановити / видалити також атрибути папок


2
Це має бути встановлено як найкращу відповідь.
Юлій

2

Я створив цей пакетний файл для цього. В основному цей пакетний файл буде очищати лише атрибути для читання в каталозі його в, або в каталозі, в ньому та всіх нижчих каталогах. Сподіваюся, хтось знайде для цього користь. Вибачте будь-який код, який може здатися «поганим», оскільки я сам починаю вивчати пакетні файли.

@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

Тут багато варіантів, але цей пакетний файл підтримує випадання папки / s та / або файл / s до самого пакетного файлу.

Збережіть цей код нижче в Read-only Off.bat.

Зверніть увагу на те, як працює біт краплі всередині коду.

@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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.