如何使程序在命令行接受glob(通配符)

本文关键字:glob 通配符 何使 程序 命令行 | 更新日期: 2023-09-27 18:19:44

我希望用户能够运行我的程序(从Windows cmd),语法如下

  • app.exe *.pdf
  • app.exe February/*.pdf March/*.pdf
  • app.exe contracts.pdf

然后,该应用程序将对每个相关文件进行处理。在Unix中,这被称为globbing,它是由shell完成的。

如何为Windows C#命令行应用程序实现这一点?

假设语法

void Main(string[] args)
{
    foreach(var file in args.SelectMany(arg => Glob.Expand(arg)))
    {
        Process(file)
    }
}

如何使程序在命令行接受glob(通配符)

查看NuGet包Microsoft.Extensions.FileSystemGlobbing

https://learn.microsoft.com/en-us/dotnet/api/microsoft.extensions.filesystemglobbing.matcher

执行此操作的最简单方法是将命令行参数转换为正则表达式。有关如何将命令行参数转换为正则表达式的示例,请参阅.NET中的glob模式匹配。