Windows短名称与长名称不匹配

Windows短名称与长名称不匹配,windows,batch-file,cmd,Windows,Batch File,Cmd,我正在使用前缀(即ABCD*)复制文件列表,以匹配批处理脚本中的文件。但是,一些看起来匹配的文件被留下,而其他不匹配的文件被抓取 我运行了dir/X,发现少数文件的短名称与其长名称不匹配: 4/17/2015 02:04 PM 554 ABCDEF~1.TXT abcdefghijklmnopqrs.txt 4/17/2015 02:08 PM 123 ABCDEF~2.TXT 1234567890.txt 4/17/2015 03:18 PM 233 9

我正在使用前缀(即ABCD*)复制文件列表,以匹配批处理脚本中的文件。但是,一些看起来匹配的文件被留下,而其他不匹配的文件被抓取

我运行了dir/X,发现少数文件的短名称与其长名称不匹配:

4/17/2015  02:04 PM   554  ABCDEF~1.TXT     abcdefghijklmnopqrs.txt
4/17/2015  02:08 PM   123  ABCDEF~2.TXT     1234567890.txt
4/17/2015  03:18 PM   233  987654~1.TXT     abcdefg123456.txt

知道为什么会发生这种情况以及如何解决吗?

短文件名和长文件名不需要匹配。默认算法记录在“NTFS如何生成短文件名”下。您也可以在

您可以使用更改短文件名

fsutil file setshortname longFileName shortFileName

如果示例数据代表实际文件,则可以指定
ABCDEFG*
来解决此问题

编辑

由于上述建议不是一个选项,您可以使用
FSUTIL
删除所有8.3名称

此命令将分析当前目录(
)中的文件,并显示更改,而不实际进行更改

fsutil 8dot3name strip /t .
删除
/t
参数以实际删除8.3名称

您还可以运行:

fsutil 8dot3name strip

查看所有选项。

希望澄清一下,上面的数据只是一个示例。这些文件来自外部源,然后根据文件名的前4个字符移动到特定目录中。执行此操作的脚本将没有机会重命名文件的短名称。如果脚本只能使用长名称(而不是长名称和短名称),这将是理想的。请编辑一个真实的例子到您的问题中,并透露您实际想要做什么。A
copy ABCD*
匹配long或shortname;在您构建的人工示例中,将复制第一个和第三个,但对于第二个,
abcd*
与两个名称都不匹配。在我有限的测试中,
DIR
COPY
匹配长文件名和8.3名称的通配符。因此,在上面的示例数据中,对于
ABCD*
,所有三个文件都将被复制。这是针对我的情况的最佳选择,因为可以在移动之前执行剥离。非常感谢。