windows - Windows文件模式中波浪号是什么意思

标签 windows winapi glob tilde-expansion filepattern

我有模式要搜索。说“*.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/

相关文章:

windows - Windows 中的计划任务需要用户登录这一事实的解决方法

delphi - 如何在不更改有效文本宽度的情况下绘制缩放文本?

winforms - 如何确定文件是否已打开以在 Windows 上追加?

linux - Linux 终端中的文件 Glob 模式

algorithm - 如何判断两个 glob 模式中哪一个更通用

java - 包装 Java 进程的 Windows 服务不时停止

c# - XP上的C#应用​​程序崩溃

c++ - WinAPI 函数 LoadLibrary() 导致函数在执行错误期间失败

winapi - StackWalk64 似乎有效,但 SymFromAddr 返回虚假名称

regex - 通配符的行为是否有所不同?