Как рекурсивно удалить атрибут «только для чтения» в Windows 7


71

Мне нужно удалить атрибуты только для чтения всех файлов в каталоге в Windows 7 с помощью командной строки. Не могли бы вы привести пример по этому поводу?


1
Вышел из головы без тестированияattrib /S -R
nixda

Ответы:


89

Я бы использовал команду ATTRIB, например:

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

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

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


17
Добавьте, /dесли вы хотите, чтобы он также обрабатывал фактические папки.
LawrenceC

2
Обратите внимание, что это не работает с пометками файлов как «скрытые» или «системные». Чтобы удалить атрибут «только для чтения» из этих файлов, необходимо также удалить другие атрибуты (например attrib -h -r).
Excelcius

2
если путь содержит пробелы, вставьте "" like: attrib -r "c: \ Program Files (x86) \ SmartGit *. *" / s
Даниэль Хари

Страница по этой ссылке больше не существует.
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 и / или file / 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.