一、DOS命名规则与Windows命令提示符
- DOS系统下的文件名规则
A、文件名由1~8个字符组成,字符可包含英文字母、数字和一些特殊字符,但是不能包含*,?.<>:;[]|等特殊字符;文件名不区分大小写且文件名中间不可包含空格;
B、扩展名由0-3个字符组成,无空格和特殊字符;
当实际文件名超出8.3格式时,需进行DOS下的文件夹或文件名缩写显示,规则如下:文件名前6个字符+~1正好是8个字符作为文件名,如果前六个相同的,依次用~2、~3、~4累加,如果文件名中有空格则会自动去掉,向后移位计算(一个中文字算两个字符)。 - Windows系统下的命令提示符:
windows下的命令提示符只是模拟DOS特性但非环境,支持大部分DOS操作并加入“独家”的大量快捷管理功能,实际仍然是按照WIN32模式运行的,所以大部分的纯DOS实模式下程序都是无法在命令提示符下运行的,总结起来,实际Windows的命令提示符是个山寨版“DOS系统”。
二、Windows下非法文件的创建和删除
我们从上文可以看出,实际上DOS系统也是禁止使用一些特殊字符作为文件名的,当然Windows控制更加严谨,所以允许使用非法文件名是应该来说是NT系统的一个BUG,当然也不排除是微软有意留的特殊私密用途,一直到Windows 7上都没把这个“问题”改善“,是不是有意的只有天知道。下面看一下几种非法文件的创建和删除。在”开始“菜单——”运行“,输入cmd,回车即可进入,下面的小标题中现象均指在Windows explorer下显示情况。先把典型的报错图贴出来:
图1——无法删除文件出错图
图2——典型的打开错误图
- 可见、无法打开、无法删除的非法文件
创建
G:\>md test..\
注:Windows显示test.,无法打开,无法删除
拷贝
G:\>copy metsky.txt test..\
打开
G:\>start G:\test..\
要打开该类型文件,还可以通过dir /x命令查看该文件夹的别名(类似:AE216~1这样的名字),然后在运行里或浏览器中直接输入G:\别名回车也可打开。
删除
G:\>rd test..\
G:\>rd /S /Q test..\
注:带/S参数表示删除目录树,相当于DELTREE,带/Q表示删除不再确认。
改名
使用dir /x命令查看该文件夹的别名,如下图:
- 上图中a..\的文件夹别名是ae216~1,所以我们可以通过其别名进行改名,如下:
rename ae216~1 b
这样就可以把该文件改为正常名字。 - 可见、可打开、不可删除的非法文件
创建
G:\>md "test / "
注意,例句中有空格,该文件可见,可打开,可在该文件夹下创建、拷贝、删除文件,但不可删除。
打开
G:\>start G:\test..\
删除
G:\>rd "test / " - 隐藏、不可打开的非法文件
在DOS系统中(实际上WINDOWS系统和LINUX也可以使用),“.”代表当前目录,“..”代表上级目录,正式利用这点,来创建混淆目录。
创建(FAT可以,NTFS不可以)
G:\>md ...\
注:该文件夹在windows上不可见、不可打开、不可删除。
打开
G:\>start G:\...\
删除
G:\>rd ...\
如果大家遇到类似的文件或文件夹(小编知道矮人工具箱和一键还原就喜欢整这个隐藏文件夹),就可以采用上述方法进行删除,当然你也可以使用专门的工具比如冰刃、Unlocker、文件粉碎机等等,进行删除。
为了安全起见,请您谨慎使用带有匹配符的DOS删除语句(类似del /f /a /q \\?\%test这样的语句),一不小心可能会全盘删除。
注意事项
- Windows 9X无法识别“不可显示的 ASCII 字符”作为文件名
- Windows XP不识别文件名使用UNICODE 字符
- 保留设备名作为文件名从VISTA开始取消限制
- 超长文件目录名(超过255字节,如在Win平台输入最多输入244个字节)可能会让系统死机
- 把驱动器盘符改成中文看看
参考资料
http://www.metsky.com/archives/272.html