Мне нужно удалить атрибуты только для чтения всех файлов в каталоге в Windows 7 с помощью командной строки. Не могли бы вы привести пример по этому поводу?
4 ответа
Я бы использовал команду ATTRIB, например:
attrib -r c:\folder\*.* /s
attrib
это команда
-r is
флаг удаления атрибутов только для чтения
c:\folder\*.*
- это папка, в которой вы ее запускаете, а также шаблоны для всех файлов
/s
- это флаг для всех подкаталогов и файлов
Вот еще немного документации и примеров для команды attrib: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/attrib.mspx?mfr=true
Сначала откройте командную строку. Затем cd
в каталог, где вы хотите начать применять изменения атрибута. Наконец, введите следующую команду:
attrib -R /S
Это приведет к удалению атрибута «только для чтения» из всех файлов в текущем каталоге, а затем будет повторен, чтобы сделать то же самое во всех подкаталогах.
- Technet -
attrib
Примечание. В большинстве других ответов используется только -r
который может не работать с файлами, для которых установлены system
или hidden
атрибуты.
Итак, вот решение для рекурсивного удаления атрибута только для чтения из всех файлов (включая те, которые являются системными или скрытыми) внутри каталога:
attrib -s -h -r "c:\path_to_folder\*.*" /s /d
Описание:
-s
удалить системный атрибут
-h
Удалить скрытый атрибут
-r
Удалить атрибут только для чтения /s
Установить / удалить атрибуты в текущей папке и включая вложенные папки /d
Установить / удалить атрибуты папок тоже
Я создал этот командный файл, чтобы сделать это. По сути, этот пакетный файл будет очищать атрибуты только для чтения в каталоге, в котором он находится, или в каталоге, в котором он находится, и во всех нижних каталогах. Надеюсь, что кто-то найдет применение для этого. Извините за любой код, который может показаться "плохим", так как я только начинаю изучать пакетные файлы самостоятельно.
@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