1、微软没有提供文件夹匹配,比如说D:\Test*\test*.prefab,这样是没法匹配的!!!
2、Directory.GetFiles(dic,filename);其中filename支持正则,还提供第三个参数,是否递归查找(SearchOption.AllDirectories)
3、cmd方式
public static List<string> GetAllMatchesFilePath(string matchesFilePath){
List<string> ret = new List<string>();
// 要执行的命令行命令
string command = "dir /b/s " + matchesFilePath; // 例如,在Windows上列出当前目录的文件和文件夹
// 创建一个新的ProcessStartInfo对象,设置命令行参数和其他属性
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo
{
FileName = "cmd.exe", // 通常使用cmd.exe来执行命令行命令
Arguments = "/c " + command, // /c参数告诉cmd.exe执行完命令后关闭
UseShellExecute = false, // 设置为false,以便我们可以重定向输出
RedirectStandardOutput = true, // 允许我们从.NET中读取stdout
RedirectStandardError = true, // 允许我们从.NET中读取stderr
CreateNoWindow = true // 不创建新的窗口
};
// 创建一个新的Process对象
using (System.Diagnostics.Process process = new System.Diagnostics.Process { StartInfo = startInfo })
{
// 开始执行进程
process.Start();
// 读取标准输出
StringBuilder output = new StringBuilder();
using (StreamReader reader = process.StandardOutput)
{
string result = reader.ReadToEnd();
string[] spStrArray = result.Split("\r\n");
foreach(string str in spStrArray){
if(!string.IsNullOrEmpty(str)){
ret.Add(str);
}
}
}
// 等待进程完成
process.WaitForExit();
}
return ret;
}