.NET,当 EnumerationOptions MatchType = MatchType.Win32 时搜索模式中“<”和“>”通配符的语法

.NET, Syntax for '<' and '>' wildcards in search pattern when EnumerationOptions MatchType = MatchType.Win32

Net-Core 和 Net 5+ 版本的 MatchType.Win32 .NET 文档说:

Match using Win32 DOS style matching semantics.
'*', '?', '<', '>', and '"' are all considered wildcards. Matches in a traditional DOS / Windows command prompt way.

https://docs.microsoft.com/en-us/dotnet/api/system.io.matchtype?view=net-6.0

如何使用“<”和“>”通配符的语法?我在任何地方都找不到,关于 DOS,我唯一能找到的是“*”和“?”通配符。我知道在 Windows Explorer 中你可以进行类似“date:>01/01/2021”的搜索,但它更像是一个运算符而不是通配符,如果将它与

一起使用会给出语法异常
var query = Directory.EnumerateDirectories(
       basefolder,
       "date:>01/01/2021", 
       new EnumerationOptions() { MatchType = MatchType.Win32 });

将常规旧“*”作为 searchPattern 传递仍然 returns 所有条目,尝试单独传递“<”或“>”,因为 searchPattern 没有在文件夹上产生任何结果我试过了。

处理 <> 的逻辑记录在此处的内联注释中:https://github.com/dotnet/runtime/blob/c5c7967ddccc46c84c98c0e8c7e00c3009c65894/src/libraries/System.Private.CoreLib/src/System/IO/Enumeration/FileSystemName.cs

具体来说:

https://github.com/dotnet/runtime/blob/c5c7967ddccc46c84c98c0e8c7e00c3009c65894/src/libraries/System.Private.CoreLib/src/System/IO/Enumeration/FileSystemName.cs#L272

// '<' (DOS_STAR) matches any character except '.' zero or more times.`
// If we are at a period, determine if we are allowed to consume it, i.e. make sure it is not the last one.

https://github.com/dotnet/runtime/blob/c5c7967ddccc46c84c98c0e8c7e00c3009c65894/src/libraries/System.Private.CoreLib/src/System/IO/Enumeration/FileSystemName.cs#L309

// '>' (DOS_QM) is the most complicated. If the name is finished, // we can match zero characters. If this name is a '.', we don't match, but look at the next expression. Otherwise we match a single character.

这里只能使用两个通配符:*?

也许您可以考虑使用一些 Linq 表达式来过滤返回的集合?

我认为如果时区在您的代码中对您很重要,则更准确。