我有搜索模式。说“* .txt”。
现在我有一些我不想在那里列出的文件。我相信他们不符合这种模式。 但在Windows上,他们确实如此。
我知道代字符字符用于制作遗留8.3文件名的简短形式。那就是LongFilename.json可能是LONGFI~1.JSO。但我不知道它们是以文件搜索模式在Windows上以某种方式处理的。他们是。我找不到任何关于它们的含义以及如何以我的方式匹配文件的文档。
我的问题不在于简短形式。或者我认为它与它没有直接关系。
我有文件“A.txt”。现在我想要临时文件并使用“A.txt~”。它是通常不可见的unix备份文件。但在Windows上,它们本身不应该有特殊意义。仅适用于我的申请。
现在我想要“* .txt”文件列表。命令 dir * .txt 令我惊讶的是同一目录中的所有 .txt~文件。我不想要他们。我在Win32 API中使用FindFileFirst。我没有在文档中找到关于波浪符号的任何内容。 FindFileFirst(“ .txt”,handle)也返回文件“A.txt~”。我可以使用一些标志来排除它们吗?我知道我可以创造特殊条件,就像我有“。”一样。和“......”。 〜运算符如何工作? A.txt~1也匹配。是否忽略了波浪之后的一切?是那个功能还是bug?
我正在测试Windows 7 Professional,64版,如果它改变了什么。
答案 0 :(得分:4)
FindFirstFile
还包含短名称,因此模式*.txt
将包含以8.3
结尾的*.txt
表示形式的任何内容,其中包含*.txtANYTHING
,而非只是~
字符(请参阅dir /x
了解与之匹配的内容)。
您需要在FindNext枚举中进行过滤。
答案 1 :(得分:0)
如果您正在搜索.txt文件,例如,您可以在Windows中使用“kind:text”选项来排除txt~和类似文件,因为它们不再是可识别的类型。
这适用于常规Windows搜索。我不是100%确定API,但它也应该在那里。