分类: WINDOWS
2008-01-28 11:32:00
在删除文件时,经常会遇到的一个问题是,文件正在使用,无法删除。如果试图删除以独占访问而不是以共享访问方式打开,并且正在使用中的文件时,系统就会出现错误提示:“无法删除###:文件正在被另一个人或程序使用”。而另一种情况则是,能够使用删除命令删除文件,但在打开文件的进程释放该文件之前,文件实际上并未删除。
要解决上述问题,需要确定拥有文件打开句柄的进程,然后关闭此进程。在以前的Windows中,我们可以使用资源工具包的Oh.exe。但在XP中,安装好的Support Tools却不带Oh.exe。不过,XP提供了一个新的Openfiles.exe命令行工具,它能够报告进程打开的各个文件。与Oh.exe相似,Openfiles.exe也要求打开系统内核监视,这会消耗一些内存,并降低系统操作的性能。打开系统监视的命令是“Openfiles /local on”,它会启用系统全局标志“维护对象列表”,需重新启动系统才能生效。重新启动系统后,在命令提示符下执行不带参数的“Openfiles”,即可看到各个进程打开文件的清单(如图2)。
原因二:文件系统损坏
磁盘上的坏区、其他硬件故障或者软件错误都可能会损坏文件系统,使文件出现问题而无法删除。典型操作失败的方式可能各不相同,当检测到文件系统损坏时,通常会收到一条提示运行Chkdsk的信息。
如果遇到这种情况,可以在磁盘卷上运行Chkdsk实用工具以纠正任何存在的错误。根据损坏的性质,Chkdsk也许能够恢复文件数据,也许无法恢复,但Chkdsk可以使文件系统返回到一种在内部一致的状态。有关Chkdsk实用工具的命令及参数,可以在命令提示符下执行“Chkdsk /?”查阅。
原因三:文件使用了存取控制列表
如果某个文件使用了存取控制列表(Access Control List,简称ACL),而操作者又没有相应的权限,那么删除文件时就可能出现“访问被拒绝”的提示(如图3)。
通常情况下,管理员具有取得任何文件所有权的隐含能力,文件所有者也具有修改文件权限的隐含能力。不过,这些默认的权限是可以被修改的。
要解决因ACL导致文件无法删除的问题,就必须以具有相应权限的用户身份登录,或者是赋予自己删除文件的权限,然后才能删除文件。要注意的是,操作者必须拥有这些文件的所有权才能更改权限。如果是因为文件使用了不规范的ACL而不能使用某些安全工具显示或修改其权限时,可以尝试使用命令行工具Cacls.exe进行修改。
原因四:文件名使用了一个保留名称
众所周知,像AUX、LPT1这样的名称是为旧式DOS设备保留的。为了向后兼容,在Windows中不允许使用这些文件名,也不能使用典型的Win32文件调用来创建它们。反之,如果文件名是Win32命名空间中的一个保留名称,则同样可能无法删除此文件。
要解决此类问题,可以在Linux或其他非Windows的操作系统下重命名或删除该文件。另外,如果能够使用特定的语法指定到该文件的路径,也可以使用一些内置的命令绕过典型的Win32保留名称检查。例如,在Windows XP中使用以下命令,可以删除名为“lpt1”的文件(Del命令后面加上“\\?\”来避免Windows检查文件名的合法性):
Del \\?\c:\文件路径\lpt1
原因五:无效的文件名称
如果文件名中包括一个无效名称,例如文件名有一个尾随空格,或一个尾随句点,或者文件名仅由一个空格组成,同样可能无法删除该文件。值得一提的是,如果使用典型的Win32语法打开名称中有尾随空格或尾随句点的文件,则尾随空格或句点在打开实际文件之前会被去掉。因此,如果在同一个文件夹中有两个分别名为“File.txt”和“File.txt ”的文件(注意第二个文件名后面的空格),当使用标准Win32调用打开第二个文件时,实际上会打开第一个文件。同样,如果文件的名称仅是“ ”(一个空格字符),当尝试使用标准Win32调用打开它时,实际上会打开该文件的父文件夹。在此情况下,如果尝试更改这些文件上的安全设置,就有可能会意外更改其他文件上的设置。
与解决文件名使用保留名称的方法类似,可以使用一种适当的内部语法删除此文件。例如要删除包含尾随空格的文件,可以使用如下命令:
Del \\?\ c:\文件路径\(尾随空格的文件名)
原因六:文件路径太深无法访问
文件位于比最大路径字符数(MAX_PATH)更深的路径中,可能导致文件无法访问,当然,这种情况较为少见。如果路径深的原因是文件夹名称太长,最简便的解决方案是使用自动生成的8.3名称访问该文件。如果8.3路径也太长,可以从根文件夹开始重命名文件夹,缩短它们的名称,以使目标文件的路径深度不超过MAX_PATH。若是文件的深度超过128个文件夹,可以通过创建一个网络共享,使其位于文件夹树中尽可能深的位置,然后通过访问此共享来访问文件。
一般情况下,如果遇到因文件路径太深无法访问的情况,可以通过使用创建文件的软件来管理这些文件。也就是说,如果有一个程序,它可以创建超过MAX_PATH的文件,则我们也可以使用该程序来管理这些文件。此外,对于通过网络共享创建的深层次结构的文件也可以通过使用同一共享来进行删除。
前面介绍了Windows系统中文件或文件夹无法删除的几种原因以及解决的方法。在某些情况下,可能还会遇到上述各种原因的不同组合,使得删除文件的过程更加复杂。这就需要读者能够举一反三,灵活应用微软提供的各种实用工具进行解决了。
原因七:Windows XP中删除AVI文件的问题
很多朋友可能会遇到Windows XP中无法删除AVI文件的问题,这主要是由于Windows XP视频预览功能的Bug所导致的。你可以尝试用以下方法进行删除。
方法一 在运行命令框中输入“Regs-vr32/u Shmedia.dll”并回车,卸去Windows XP的视频文件预览功能。当以后想要恢复视频预览功能时,再使用“Regsvr32Shmedia.dll”命令重新注册即可。
方法二 先打开命令提示符窗口,然后在任务管理器中结束Explorer进程,再从命令提示符窗口中切换到保存视频文件的文件夹下,用Del命令删除文件。
方法三 如果安装了双系统,可以从另一个系统,如Win98下进行删除。
如:我的G盘有个文件夹,里面什么也没有,但是却不能删除,也不能重命名,一删除或重名名是就有个这样的警告 无法删除 文件:无法读源文件或磁盘 请大虾帮忙------
解:Windows系统中删除顽固文件的十二招技巧
屡试不爽...
相信大家都遇到过要删除某个文件时,提示"该文件正被别的进程使用,不能删除"的情况,通常的方法是关闭使用该文件的程序或在任务管理器中杀死相关进程后,删除。可如果这样也不能删除呢?这时,你可以试试下面的方法,相信其中至少有一个办法能解除您的烦恼:
1、注销或重启后,再删;
2、进入安全模式或用启动软盘(光盘)启动进入纯DOS,删除;
3、如果是删除文件夹,从里往外删,即先进入该文件夹,删除里面所有内容,然后再返回上一层目录,删除该文件夹;
4、用Windows优化大师等的文件粉碎机删除;
5、Win2000/XP系统以管理员身份登录,再执行删除操作;
6、如果系统是WinXP,关闭系统还原,再删;
7、对于大文件,特别是压缩包文件,关闭杀毒软件的实时监控后,再删;
8、注销掉预读功能再删,方法:开始→运行,输入regsvr32 /u shmedia.dll,确定。重启后再删。完了再运行一下regsvr32 shmedia.dll,恢复注册;
9、用WinRAR删除,打开WinRAR,点"添加",选中要删除的文件,在"设置"下点选"压缩后删除源文件",压缩完成后把压缩文件也删除。
10、先对该文件所在分区进行磁盘扫描,扫描前选中"自动修复文件和扇区",完成后再删;
11、打开命令提示符窗口,然后再打开任务管理器,结束"Explorer.exe"进程,在命令提示符窗口进入该文件所在目录,用Del命令删除,完了在任务管理器中点"文件"→新建任务→浏览→找着C:\WINDOWS\Explorer.exe,点"确定"即可;
12、Win2000/XP系统,清除页面文件再删除。方法:系统属性→高级→性能设置→高级→虚拟内存更改→把页面文件大小设为"无分页文件",重启后进行删除。然后恢复原来的页面文件。
还有一种如:
或许你会遇到这样一种情况:电脑某硬盘里有一个文件夹经过多种方法的尝试都无法删除,在资源管理器里面删除的时候会有“无法删除 文件:无法读源文件或磁盘”的错误提示,而在控制台下面用rd(rmdir)命令删除时,又提示“系统找不到指定的文件”,试用unixutil的unlink和rm也搞不定它。甚至尝试过检查文件系统是否存在问题,但是仍然没发现问题所在。这个文件夹的存在简直成为心腹之患,欲除之而后快。
下面以Windows XP为例,向朋友们介绍删除这样一种文件夹的有效方法:
首先需要你了解和熟悉的操作命令:
如果要删除的文件夹或文件是隐藏属性的,删除时的命令为:
rd /a 文件夹
del /a 文件
假设删不掉的文件夹在“g:\delete”目录下面,则操作如下:
1、“开始”》》“运行”,在“运行”对话框中输入:cmd
2、在命令提示符中输入:
g: --回车
cd \delete --回车
手动将当前位置切换到“g:\delete”目录下面。
如果命令执行成功则闪烁的光标前面就会出现“g:\delete>”的提示符。
3、输入"dir /x"命令,然后按回车来运行命令。窗口中会显示delete目录下的所有文件、文件夹信息,在显示的各列信息中,倒数第二列为“8.3”格式的短名称。被截短名称一般情况下会以"~1"结尾。
4、选择你需要删除的文件或者文件夹的所在行,观看该行的倒数第二列,把它的文件、文件夹名称抄录下来,然后在“g:\delete>”的提示符后输入命令:
如果是删除文件夹就输入:rd 文件夹(抄录) --回车
如果是删除文件,就输入:del 文件(抄录) --回车
至此,应该可以成功地删除这样的文件或文件夹了!
不过,对于这样难以删除的文件夹,有一点是值得我们借用,就是用它来存放有用的资料而不用担心被轻易地删除掉!