[转]windows 短文件名/短路径名规则

How Windows Generates 8.3 File Names from Long File Names

Windows generates short file names from long file names in the following manner:

  • Windows deletes any invalid characters and spaces from the file name. Invalid characters include:

    . " / \ [ ] : ; = ,

  • Because short file names can contain only one period (.), Windows removes additional periods from the file name if valid, non-space characters follow the final period in the file name. For example, Windows generates the short file name

    Thisis~1.txt

    from the long file name

    This is a really long filename.123.456.789.txt

    Otherwise, Windows ignores the final period and uses the next to the last period. For example, Windows generates the short file name

    Thisis~1.789

    from the long file name

    This is a really long filename.123.456.789.

  • Windows truncates the file name, if necessary, to six characters and appends a tilde (~) and a digit. For example, each unique file name created ends with "~1." Duplicate file names end with "~2," "~3," and so on.
  • Windows truncates the file name extension to three characters or less.
  • Windows translates all characters in the file name and extension to uppercase.

Note that if a folder or file name contains a space, but less than eight characters, Windows still creates a short file name. This behavior may cause problems if you attempt to access such a file or folder over a network. To work around this situation, substitute a valid character, such as an underscore (_), for the space. If you do so, Windows does not create a different short file name

For example, "Afile~1.doc" is generated from "A file.doc" because the long file name contains a space. 
No short file name is generated from "A_file.doc" because the file name contains less than eight characters and does not contain a space. 
The short file name "Alongf~1.txt" is generated from the long file name "A long filename.txt" because the long file name contains more than eight characters.

转自:http://www.cnblogs.com/jiangzhen/p/3957333.html

时间: 2024-12-20 21:12:01

[转]windows 短文件名/短路径名规则的相关文章

关于CMD/DOS中的短文件名规则

最近在制作一个批处理的过程中发现一个很郁闷的问题,就是有些时候搜索到的结果不是我们想要的 比如上图,我要搜索的文件时?ec*.*,也就是说我要搜索第二个字母是e,第三个字母是c的所有文件而搜索到的结果前两个都正确,但是后面两个就错了,很不理解,最初以为是bat写的问题后来发现直接在DOS写命令也是一样的,有很多完全不符合的文件,遂百度,才知道怎么回事 星号通配符总是使用短文件名映射,因此,您可能会得到意外的结果 也就是说当使用*通配符后只按照短文件名搜索,而不按照原始长文件名来搜索我输出了下短文

长文件名和短文件名

文件命名时有一个8.3规则 8是指文件名,就是******.XXX里的*** 意思是这个部分不能超过8个字符,在DOS里,如果超过8个字符了是不会被识别的.后面的XXX是扩展名,也不一定非得是三个字符,像网页文件的扩展名可以是htm也可以是html,只不过国际上习惯于用三个字符来做扩展名 "文件名.扩展名"才是一个文件的完整的名字 文件名用来标识一个单独的文件,指的是一个个体,扩展名标识的是一类文件 FAT32系统中长文件名的存储(转) 2011-07-29 16:22:11|  分类

短文件名漏洞修复

短文件名漏洞其实在13年时还是很令人耳熟能详的,不过随着所在公司的编码语言转型,目前使用ASP.NET的新项目基本上没有了,而更多的是对原来的采用ASP.NET语言开发的项目进行维护或打个补丁. 事出突然,12月的某个下午被项目组喊去帮个忙,第一感觉就是"是不是线上的项目被人黑了?".于是乎就跑去看下具体的情况,项目组负责人见到我第一句话就是"某个项目被某国家单位进行线上项目巡检时发现了一个漏洞,但是不会修". 往他所指的电脑上简单一看,映入眼帘的就是"存

IIS短文件名泄露漏洞危害及防范方法(转)

攻击方法(转自http://blog.sina.com.cn/s/blog_64a3795a01017xqt.html) 一直在寻找一种方法,如果我可以使用通配符"*" 和 "?"发送一个请求到iis,我意识到当IIS接收到一个文件路径中包含"~"的请求时,它的反应是不同的.基于这个特点,我们可以根据http的响应区分一个可用或者不可用的文件.在以下的表中,文件validxxx.xxx是存在于网站服务器根目录的.(备注:xxx.xxx是指不确定,

IIS短文件名漏洞修复

漏洞描述:IIS短文件名泄露漏洞,Microsoft IIS在实现上存在文件枚举漏洞,攻击者可利用此漏洞枚举网络服务器根目录中的文件. 危害:攻击者可以利用"~"字符猜解或遍历服务器中的文件名,或对IIS服务器中的.Net Framework进行拒绝服务攻击. Windows 还以 8.3 格式生成与 MS-DOS 兼容的(短)文件名,以允许基于 MS-DOS 或 16 位 Windows的程序访问这些文件.在cmd下输入"dir /x"即可看到短文件名的效果.通配

利用URLScan工具过滤URL中的特殊字符(仅针对IIS6)-- 解决IIS短文件名漏洞

IIS短文件名漏洞在windows服务器上面非常常见,也就是利用“~”字符猜解暴露短文件/文件夹名,比如,采用这种方式构造URL:http://aaa.com/abc~1/.aspx,根据IIS返回的错误信息,猜测该路径或文件是否存在,具体可参考这篇文章:http://www.freebuf.com/articles/4908.html. 就单纯的解决这个问题来说,微软的URLScan工具是最适合的一个轻量级工具,关键它是免费的,而且安装.配置非常简单.安装过程就不说了,傻瓜式的. 安装完毕之后

【转】windows下文件名命名规则的正则表达式

[转自:http://blog.csdn.net/lsj19830812/article/details/4137003] 搜索了不少网站也没找到合适的,还是自己学习了下正则表达式,写了一个大家供参考 被保留的设备名不能被用来作为文件 名:CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9

iis短文件名漏洞解决方法

Microsoft IIS在实现上存在文件枚举漏洞,攻击者可利用此漏洞枚举网络服务器根目录中的文件.危害:攻击者可以利用"~"字符猜解或遍历服务器中的文件名,或对IIS服务器中的.Net Framework进行拒绝服务攻击. 关闭NTFS 8.3文件格式的支持.该功能默认是开启的,对于大多数用户来说无需开启. 运行cmd,输入fsutil behavior set disable8dot3 1 2.如果是虚拟主机空间用户,可采用以下修复方案:1)修改注册列表HKLM\SYSTEM\Cu

将长文件名转换成短文件名

实现效果: 知识运用: 系统API函数GetShortPathName [DllImport("Kernel32.dll")] private static extern Int16 GetShortPathName(string IpszLongPath,StringBuilder IpszShortPath,Int16 cchBuffer); 实现代码: [DllImport("Kernel32.dll")] private static extern Int1