本文着重讨论这些乱码文件名文件的产生原因以及如何删除这些烦人的乱码文件。
一、乱码文件名文件产生的原因
经过仔细分析和研究,我认为乱码文件产生的原因主要有以下几点:
1. 硬盘磁道或扇区出现错误,导致文件名出现乱码,这样的文件无法正常删除。
2. 有时候在Windows中执行的删除文件 *** 作,只是将磁盘上文件分配表里的相关文件信息删掉了,并没有实际删除文件。
3. 不正确的 *** 作。在使用BT下载软件时,下载进度到99%时就停止下载,并自己修改文件名,由于BT下载不是顺序下载,这样有可能导致文件索引信息错误,导致乱码文件出现。
4. 使用磁盘工具PQmagic转换过分区格式之后(如从NTFS到FAT32),出现文件名乱码现象。因为PQmagic对中文文件名的支持不是很好,所以,在整理完分区后会导致中文文件名出现乱码,甚至文件内容也出现乱码。
5. 病毒引起的文件名乱码,这种乱码文件产生的原因比较复杂,一般是由于病毒自己制造或杀毒软件删除病毒不彻底导致磁盘逻辑错误。
6. 闪存、移动硬盘等移动存储设备出现乱码文件,尤其是手机存储卡最容易出现这种问题。这种情况多是由于不正确地使用移动存储设备造成的,比如直接拔离设备等。但是有的时候质量不好的闪存或移动硬盘也会出现乱码文件,这是移动设备本身的质量问题。比如当往存储卡中写入数据时出错,出现乱码文件,同时系统右下角出现“Windows延缓写入失败,Windows无法为x:/windows/windowsupdate.log文件保存所有数据”的提示,这多半是由于存储卡已经损坏了。
二、删除乱码文件名的文件
由于乱码文件产生的原因有多种,经过我仔细研究,找到了以下几种处理办法:
1. 尝试为文件重命名,如果可以重命名的话。运行cmd 打开任务管理器,结束explorer进程,切换到cmd命令提示符状态下输入“Del 文件名”后就可以删除文件了,这种方法只适用于可以重命名的文件。在进行 *** 作时先关闭其他一切不相关的程序。
2. 如果重命名文件时系统提示“拒绝访问”,那么在cmd模式下运行“chkdsk /f”命令检查磁盘错误并修复。
如果出现找到磁盘错误,一般的错误都是可以修复的,在修复完成后就可以删除乱码文件了。
注意:有时,由于乱码文件所在分区为系统区,系统会提示“另一个进程正在调用该卷,是否希望下次开机时检查该卷?”我建议用这样的方法运行chkdsk命令,使用Windows安装盘引导系统,在选择新安装windows界面时,按“R”修复已有系统,进入命令提示符状态,在这里运行“chkdsk /f”命令。我测试过,这样运行的效果要比在Windows下的cmd模式中好很多。再运行“fixmbr”命令修复分区表。也可以修复系统其他的问题。
3.如果进行完上一步仍然无法删除乱码文件,可以使用我们最常用的WinRAR压缩工具来删除,具体的方法是压缩乱码文件并选中“压缩后删除源文件”选项。这样,一般的乱码文件就可以删除了。
4.但是如果文件的磁盘文件索引块已经被破坏,那WinRAR也是没有办法的,这时候就要借用Ghost这个强大的工具了。先把有乱码文件的分区做成镜像文件,再使用Ghost explorer浏览镜像文件,找到乱码文件并删除,再把镜像文件恢复到源分区。这个方法一般可以解决绝大数乱码文件名无法删除的问题。
5. 如果你装的是Windows和Linux双系统,还有一种解决办法。
首先,用Linux启动系统,用“mount”命令加载那个有乱码文件的FAT32 分区并指定codepage=cp437,就可以看到完整的中文文件名和目录了。然后,用“cp -r”命令到拷贝乱码文件到Linux 分区上面再用“umount”命令卸载FAT32分区,重新用“mount”命令加载并指定 codepage = cp936,用“iocharset=cp936 cp -r”命令把乱码文件拷贝回去。这个方法可以完全无损地恢复分区。
提示:对乱码文件,不要使用文件粉碎机、unlocker、优化大师等文件删除工具,这些工具对乱码文件没有作用,甚至会导致磁盘出现新的错误。考试大我整理
1.查询inode
:
代码如下
[oracle@test]$
ll
-i
total
14694452
17956913
-rw-r–r–
1
oracle
oinstall
0
Jan
18
20:24
1?.txt
2.
修改测试文件名:
代码如下
find
.
-inum
17956913
-exec
mv
{}
file.txt
3.
删除乱码文件
代码如下
[oracle@test]$
ll
-i
total
14694452
….
-rw-r–r–
1
oracle
oinstall
0
Jan
18
20:24
file.txt
记录:删除乱码的文件可使用
find
.
-inum
17956913
-exec
rm
{}
文件夹
对于文件夹,尤其是非空的文件夹,上面的方法就不适用了,要用到另外的参数来实现,首先相同的是查看乱码文件夹的节点号
代码如下
ls
-i
18612483
瑗块.?..
-
Thank
you,
Love(128kbps)
2011.06.22
接下来使用find命令删除
代码如下
find
-inum
18612483
-exec
rm
-rf
{}
find:
./瑗块.?..
-
Thank
you,
Love(128kbps)
2011.06.22:
No
such
file
or
directory
虽然提示我们找不到此文件或文件夹,但其实已经表明删除了。-exec作用是查找后执行命令,其中{}代表前面查询到的结果,空格+是结束符,其它就不说了。-exec后可以跟任何常用命令,因此这方法不但适用于文件夹,文件也可以。
小技巧
怎么批量删除呢?其实很简单,用for就好了
代码如下
文件
for
n
in
22413315
22413314do
find
-inum
$n
-deletedone
文件夹
for
n
in
22413315
22413314do
find
-inum
$n
-exec
rm
-rf
{}
done
$n是变量名,与for后面定义的一致,其它没啥好说的,适用其它 *** 作。
注:更多精彩教程请关注三联电脑教程栏目,三联电脑群:189034526欢迎你的加入
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)