在系统的日常使用中,我们经常会遇到文件删除不了的情况,提示“删除文件或文件夹出错”或“文件夹访问被拒绝”等等类似情况,在XP/Win7/Win8系统中都会遇到。用常规方法无法解决,下面小编将尝试各种非常规的方法来彻底删除这些顽固文件或文件夹。
一、常规解决办法:
1.注消或重启电脑,然后再试着删除。
2.进入“安全模式删除”。
3.在纯DOS命令行下使用DEL,DELTREE和RD命令将其删除。
4.如果是文件夹中有比较多的子目录或文件而导致无法删除,可先删除该文件夹中的子目录和文件,再删除文件夹。
5.在任务管理器中结束Explorer.exe进程,然后在命令提示符窗口删除文件。
6.如果你有安装ACDSee,FlashFXP,Nero,Total这几个软件,可以尝试在这几个软件中删除文件夹。
二、高级解决方案:
这种问题更一般的方法就是更改文件权限,右键文件--属性--安全--编辑。修改文件权限,如果提示无法修改权限,就先修改文件所有者,右键文件--安全--高级--所有者…… 然而当有不止一个这样的文件的时候,这样的操作就不实在了。所以再简单介绍两个工具:takeown 和cacls
takeown 以重新分配文件所有权的方式允许管理员重新获取先前被拒绝访问的文件访问权。
参数:
/S system 指定要连接到的远程系统。
/U [domain]user 指定用户上下文,命令在此上下文中执行。
/P [password] 指定给定用户上下文的密码。如果省略,提示输入。
/F filename 指定文件名或目录名模式。可以用通配符 "*" 指定模式。允许共享名文件名。
/A 将所有权给于管理员组,而不是当前用户。
/R 递归: 指示工具运行于指定的目录和子目录里的文件上。
/D prompt 当前用户在一个目录里没有"列出文件夹"权限时,使用默认答案。当在子目录里进行递归 (/R) 操作时会发生这种情况。用有效值 "Y" 获取所有权或用 "N" 跳过。
下面是几个常用的示例
TAKEOWN /F lostfile ::将lostfile所有权给当前用户
TAKEOWN /F directory /R /A ::递归的方式将directory 目录下文件所有权限给管理员组
TAKEOWN /F * ::将当前目录下所有文件所有权给当前用户
TAKEOWN /F %windir%*.txt
cacls 用来显示或者修改文件的访问控制列表。
参数:
CACLS filename [/T] [/M] [/L] [/S[:SDDL]] [/E] [/C] [/G user:perm]
[/R user […]] [/P user:perm […]] [/D user […]]
filename 显示 ACL.
/T 更改当前目录及其所有子目录中指定文件的 ACL.
/L 对照目标处理符号链接本身
/M 更改装载到目录的卷的 ACL
/S 显示 DACL 的 SDDL 字符串。
/S:SDDL 使用在 SDDL 字符串中指定的 ACL 替换 ACL.(/E、/G、/R、/P 或 /D 无效)。
/E 编辑 ACL 而不替换。
/C 在出现拒绝访问错误时继续。
/G user:perm 赋予指定用户访问权限。
Perm 可以是: R 读取
W 写入
C 更改(写入)
F 完全控制
/R user 撤销指定用户的访问权限(仅在与 /E 一起使用时合法)。
/P user:perm 替换指定用户的访问权限。
Perm 可以是: N 无
R 读取
W 写入
C 更改(写入)
F 完全控制
/D user 拒绝指定用户的访问。
在命令中可以使用通配符指定多个文件。
也可以在命令中指定多个用户。
缩写:
CI - 容器继承。ACE 会由目录继承。
OI - 对象继承。ACE 会由文件继承。
IO - 只继承。 ACE 不适用于当前文件/目录。
ID - 已继承。 ACE 从父目录的 ACL 继承。
例如:
cacls filename /E /P Administrators:F 将Administrators对filename的访问权限改为完全控制
cacls * /E /C /P Administrators:F 将Administrators对所有文件访问权限改为完全控制
通过这两个命令就可以批量获取文件的所有权,然后正常删除文件了