我有模式要搜索。说“*.txt”。
现在我有一些我不想列出的文件。我相信他们不符合这种模式。 但在 Windows 上,它们会。
我知道波浪字符用于制作遗留 8.3 文件名的缩写形式。即 LongFilename.json 可能是 LONGFI~1.JSO。但我不知道它们在文件搜索模式中以某种方式在 Windows 上处理。他们是。我找不到任何关于它们的含义以及如何以我的方式匹配文件的文档。
我的问题不在于短格式。或者我认为与它没有直接关系。
我有文件“A.txt”。现在我想要临时文件并使用“A.txt~”。它是通常不可见的 unix 备份文件。但在 Windows 上,它们本身不应该有特殊含义。仅适用于我的申请。
现在我想要“*.txt”文件列表。命令 目录 *.txt 令我惊讶的是,同一目录中的所有 .txt~ 文件也返回。我不想要他们。我使用 Win32 API 中的 FindFileFirst。我没有在文档中找到任何关于波浪字符的信息。 FindFileFirst(".txt", handle) 还返回文件“A.txt~”。我可以使用一些标志来排除它们吗?我知道我可以制定特殊条件,就像我对“。”所做的那样。和 ”..”。 ~ 运算符如何工作? A.txt~1 也匹配。波浪号之后的所有内容都被忽略了吗?这是功能还是错误?
我正在 Windows 7 Professional,64 位版本上测试它是否有任何改变。
最佳答案
FindFirstFile
还包含遗留原因的短名称,因此模式 *.txt
将包含以 结尾的
其中包括 8.3
表示形式的任何内容*.txt*.txtANYTHING
,而不仅仅是 ~
字符(请参阅 dir/x
了解匹配的内容) .
您需要在 FindNext 枚举中进行过滤。
关于windows - Windows文件模式中波浪号是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21283936/