【发布时间】:2023-12-12 10:36:01
【问题描述】:
我有要搜索的模式。说“*.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 版上进行测试,如果这有什么改变的话。
【问题讨论】:
-
我也见过这样的事情。就我而言,它与波浪号无关。以您的示例为例,我正在搜索“.txt”,但它匹配得好像我说的是“.txt*”。重命名您的文件,使其扩展名为“.txt1”,看看它是否仍然匹配。它可能不是关于波浪号,而是关于该函数如何执行匹配。
-
哦!你当然是对的。我什至没有想到它可能是那样的。似乎我无法匹配以某些内容结尾的文件,因为末尾有隐含的 *。 A.txt1 真正匹配 dir *.txt :-(
标签: windows winapi glob tilde-expansion filepattern