如何在 Windows 上递归删除只读属性

Mer*_*glu 84 windows batch file-attributes command-line

我需要使用命令行在 Windows 上递归删除目录下所有文件的只读属性。你能提供一个例子吗?

小智 110

我会使用 ATTRIB 命令,例如:

attrib -r c:\folder\*.* /s
Run Code Online (Sandbox Code Playgroud)

attrib是命令
-r是删除只读属性的标志
c:\folder\*.*是您运行它的文件夹,加上所有文件的通配符
/s是执行所有子目录和文件的标志

以下是 attrib 命令的更多文档和示例:https : //docs.microsoft.com/en-us/windows-server/administration/windows-commands/attrib

  • 如果您也希望它处理实际文件夹,请添加 `/d`。 (20认同)
  • 请注意,这不适用于标记为“隐藏”或“系统”的文件。为了从这些文件中删除只读属性,您还必须删除其他属性(例如`attrib -h -r`)。 (2认同)
  • 如果路径包含放在 "" 中的空格,例如:attrib -r "c:\Program Files (x86)\SmartGit\*.*" /s (2认同)

std*_*err 24

首先,打开命令提示符。然后cd进入要开始应用属性更改的目录。最后,输入以下命令:

 attrib -R /S
Run Code Online (Sandbox Code Playgroud)

这将从当前目录中的所有文件中删除只读属性,然后它会向下递归以在所有子目录中执行相同的操作。


Jus*_*dow 17

注意:大多数其他答案仅使用-r可能不适用于设置了systemhidden属性的文件。

因此,这是从目录中的所有文件(包括系统文件或隐藏文件)中递归删除只读属性的解决方案:

attrib -s -h -r "c:\path_to_folder\*.*" /s /d
Run Code Online (Sandbox Code Playgroud)

说明:
-s删除系统属性
-h删除隐藏属性
-r删除只读属性
/s设置/删除当前文件夹中的属性,包括子文件夹
/d设置/删除文件夹的属性

  • 这应该设置为最佳答案。 (3认同)