来源:自学PHP网 时间:2015-04-17 18:01 作者: 阅读:次
[导读] 使用 Windows 操作系统的 CMD 命令行在日常对于文件的管理与组织上,有一些小细节是要注意的: Windows 的前身是 MS-DOS,它对于文件以及文件夹的命令管理是:8.3 格式,即在最极端的情况...
使用 Windows 操作系统的 CMD 命令行在日常对于文件的管理与组织上,有一些小细节是要注意的: Windows 的前身是 MS-DOS,它对于文件以及文件夹的命令管理是:8.3 格式,即在最极端的情况下为8个主文件名加上3个扩展名,类似于:Abcdefg.hik。而对于一个非标准的,如超长的文件名与扩展名或用了一些特殊的符号的文件名,在生成时会被映射为一个 “合法的” 8.3 格式,比如,我们在新建一个文本文件,通常的操作方法是右键单击,在“新建”子菜单下选取“文本文档”,这时会生成一个“新建 文本文档.txt”,这时,对于 Windows 来说,主文件名已经超过了8个字符(一个中文字符等于两个字符),它会自动地在后台地生成一个标准的 8.3 格式的文件名来对应它。当然,这对于操作者来说,这些是透明的,我们不需要去关心这些。而在我们平时操作这些文件时所看到的文件名也是“新建 文本文档.txt”,而不是 Windows 给它另起的名字。即使是我们回到 CMD 命令行环境,用 DIR 查看时,也同样是被 Windows 隐瞒了这个事实。 www.2cto.com 既然,我们看不到这个变化,并且平时操作也不会有什么影响,那么,为什么要注意这个问题呢?现在,我举一个例子: 一个文件夹下,有以下类似的,一万多个文件:A.txt、B.txtA,C.txt,D.txtB……它们有一个相同的地方,扩展名都包含了“txt”。现在,要删除扩展名为 TXT 的文件,那么对应的,就是 A.txt、C.txt……,用 Windows 窗口化来操作,鼠标去人工选择这么一万多个文件不说是效率极其低下,光是系统花时间显示都得很长的时间。那么,如果用 CMD 来操作,会是如何呢?很容易,想不想地就可以敲出这样的一个命令: Del *.txt www.2cto.com
也就是说,删除以 TXT 为扩展名的文件,粗这么看起来,这个命令是合要求的,但瞬间执行完了之后(真是高效率……),DIR 看看?发现这个文件夹下,已经空空如也的了……也就是说,这个命令不但清除了 .txt,就连 .txta 这一类,也没有放过,但我们并没有在原命令最后加有“*”通配符,那么,既然是其它的文件名有四个字符,那么,我们给它加一个限制如何呢?
Del *.???
执行过后,你一定会很失望,同样是给你一个空白的文件夹。还一点要注意的是,Cmd 没有“回收站”这个概念,也就是说,这些文件在这瞬间就从文件分配表中消失了(与清空“回收站”一样,它并不是物理消失。)……
那么,B.txtA,D.txtB……这些文件,对于操作系统来说,究竟会是什么?让我们来看看 Windows 系统中,它们的一些隐藏的事…… 翻看 DIR 这个命令的帮助,它有一个参数 x,我们对这些所谓的“B.txtA,D.txtB”文件做一个 Dir /x 显示: 2011-03-27 13:13 3 B80F3~1.TXT B.txtA
2011-03-27 13:13 3 D98F3~1.TXT D.txtB
这两个第一列是文件的创建日期,第二列是创建的时间,第三列是文件的长度,第五列,就是我们能看到的文件名,那么,第四列是什么呢?是一些古怪的名字,呵呵,它们就是系统自动给这些非 8.3 文件名自动生成的文件名。至于如何生成,这些深了不讨论,我们看一下这个文件名的情况:B80F3~1.TXT、D98F3~1.TXT……扩展名都是 .TXT。很熟悉吧?我们给的命令,不正是:Del *.txt 么?所以,Del 这个命令毫不犹豫,直接就挥刀刷掉了这些文件……,也就是说,直到今天,在 Windows 这个操作系统中,还遗留着一些元老级的代码,并且它们有时还会给你一些惊喜……
那末,如何避开这些麻烦?下面为参考……
作者 静夜轻风
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com