cmd.exe: "del *.txt" 也会删除 *.txt1 等

keV*_*keV 8 command-line

可能的重复:
WinXP dir 命令:3 和 4 个字符扩展名是否相同?

很长一段时间以来,我一直对 cmd.exe 的奇怪行为感到恼火(至少在 WinXP 和 Windows7 中)。命令 likedel *.txt也将删除*.txt1文件('.txt' 之后的任意数量的字符都可以)。这是一个众所周知的错误还是什么?

Jim*_*vis 8

这是一个偶尔遇到有点知道?

对行为的解释是here,并附有可能的解决方法。

摘要:它来自 NTFS 处理短 (8.3) 文件名的方式,以便与无法处理“新奇”长文件名的旧文件兼容。 dir /x可用于查看短文件名,如下所示:

C:\>dir /x *~*
 ...
02/25/2011  08:18 AM    <DIR>          DOCUME~1     Documents and Settings
05/28/2011  12:02 AM    <DIR>          PROGRA~1     Program Files
 ...
Run Code Online (Sandbox Code Playgroud)

超过三个字符的扩展名将被简单地截断为短文件名;所以.txt1, .txtxtxtxt,.txt_file等都变成了.txt


小智 6

扩展名超过 4 个字母的文件(当然其他规则也适用),将获得一个短名称,例如“foo.txt1”具有短名称“foo~1.txt”。DEL(像DIR和可能大多数其他cmd.exe内置命令)也将在短名称上运行。有关相关主题的讨论,请参见此处:http : //blogs.msdn.com/b/oldnewthing/archive/2005/07/20/440918.aspx