怎么删除文件,怎么直接彻底删除文件( 三 )


/local
on” , 它会启用系统全局标志“维护对象列表” , 需重新启动系统才能生效 。 重新启动系统后 , 在命令提示符下执行不带参数的“Openfiles” , 即可看到各个进程打开文件的清单 。

原因二:文件系统损坏
磁盘上的坏区、其他硬件故障或者软件错误都可能会损坏文件系统 , 使文件出现问题而无法删除 。 典型操作失败的方式可能各不相同 , 当检测到文件系统损坏时 , 通常会收到一条提示运行Chkdsk的信息 。
如果遇到这种情况 , 可以在磁盘卷上运行Chkdsk实用工具以纠正任何存在的错误 。 根据损坏的性质 , Chkdsk也许能够恢复文件数据 , 也许无法恢复 , 但Chkdsk可以使文件系统返回到一种在内部一致的状态 。 有关Chkdsk实用工具的命令及参数 , 可以在命令提示符下执行“Chkdsk
/?”查阅 。
原因三:文件使用了存取控制列表
如果某个文件使用了存取控制列表(Access Control
List , 简称ACL) , 而操作者又没有相应的权限 , 那么删除文件时就可能出现“访问被拒绝”的提示 。

通常情况下 , 管理员具有取得任何文件所有权的隐含能力 , 文件所有者也具有修改文件权限的隐含能力 。 不过 , 这些默认的权限是可以被修改的 。
要解决因ACL导致文件无法删除的问题 , 就必须以具有相应权限的用户身份登录 , 或者是赋予自己删除文件的权限 , 然后才能删除文件 。 要注意的是 , 操作者必须拥有这些文件的所有权才能更改权限 。 如果是因为文件使用了不规范的ACL而不能使用某些安全工具显示或修改其权限时 , 可以尝试使用命令行工具Cacls.exe进行修改 。

原因四:文件名使用了一个保留名称
众所周知 , 像AUX、LPT1这样的名称是为旧式DOS设备保留的 。 为了向后兼容 , 在Windows中不允许使用这些文件名 , 也不能使用典型的Win32文件调用来创建它们 。 反之 , 如果文件名是Win32命名空间中的一个保留名称 , 则同样可能无法删除此文件 。
要解决此类问题 , 可以在Linux或其他非Windows的操作系统下重命名或删除该文件 。 另外 , 如果能够使用特定的语法指定到该文件的路径 , 也可以使用一些内置的命令绕过典型的Win32保留名称检查 。 例如 , 在Windows
XP中使用以下命令 , 可以删除名为“lpt1”的文件(Del命令后面加上“?”来避免Windows检查文件名的合法性):
Del [URL=]?c:[/URL]文件路径lpt1

原因五:无效的文件名称
如果文件名中包括一个无效名称 , 例如文件名有一个尾随空格 , 或一个尾随句点 , 或者文件名仅由一个空格组成 , 同样可能无法删除该文件 。 值得一提的是 , 如果使用典型的Win32语法打开名称中有尾随空格或尾随句点的文件 , 则尾随空格或句点在打开实际文件之前会被去掉 。 因此 , 如果在同一个文件夹中有两个分别名为“File.txt”和“File.txt
”的文件(注意第二个文件名后面的空格) , 当使用标准Win32调用打开第二个文件时 , 实际上会打开第一个文件 。 同样 , 如果文件的名称仅是“
”(一个空格字符) , 当尝试使用标准Win32调用打开它时 , 实际上会打开该文件的父文件夹 。 在此情况下 , 如果尝试更改这些文件上的安全设置 , 就有可能会意外更改其他文件上的设置 。
与解决文件名使用保留名称的方法类似 , 可以使用一种适当的内部语法删除此文件 。 例如要删除包含尾随空格的文件 , 可以使用如下命令:
Del [URL=]?[/URL] c:文件路径(尾随空格的文件名)

原因六:文件路径太深无法访问
文件位于比最大路径字符数(MAX_PATH)更深的路径中 , 可能导致文件无法访问 , 当然 , 这种情况较为少见 。 如果路径深的原因是文件夹名称太长 , 最简便的解决方案是使用自动生成的8.3名称访问该文件 。 如果8.3路径也太长 , 可以从根文件夹开始重命名文件夹 , 缩短它们的名称 , 以使目标文件的路径深度不超过MAX_PATH 。 若是文件的深度超过128个文件夹 , 可以通过创建一个网络共享 , 使其位于文件夹树中尽可能深的位置 , 然后通过访问此共享来访问文件 。

推荐阅读