如何通过多个UNC路径搜索部分文件

本文关键字:路径搜索部 文件 UNC 何通过 | 更新日期: 2023-09-27 18:16:47

我知道这太多了;努力把自己从工作的困境中解救出来。

基本上,我需要在多个服务器上获取许多文件。现在我遇到了两个问题:1)我不知道在多个UNC路径中搜索的最佳方法。2)我必须通过部分名称搜索,可能有多个文件匹配,但我只想使用最近三天创建的文件。

这是我到目前为止的代码。我不是在找人来写,但如果有任何逻辑上的指导,我将不胜感激。

        uncPath1 = "''server'share'";
        string partial = "2002265467";
        DateTime date = Convert.ToDateTime("10/5/2015");
        DirectoryInfo a = new DirectoryInfo(uncPath1);
        FileInfo[] interactionlist = a.GetFiles("*" + partial + "*.*", SearchOption.AllDirectories);
        foreach (FileInfo f in interactionlist)
        {
            string fullname = f.FullName;
            Console.WriteLine(fullname);
            Console.Read();
        }

如何通过多个UNC路径搜索部分文件

您提到您只需要查找过去3天内制作的文件。您应该使用DateTime.Today.AddDays( -3 )来获得程序运行日前三天的日期,而不是使用Convert.ToDateTime并硬编码日期。

当然,在查找文件方法中,将日期与以下内容进行比较:

DateTime time = DateTime.Today.AddDays( -3 );
if ( File.GetCreationTime( filePath ) > time ) {
    // Add the file
}

1)您想要创建一个查找单个文件夹中的文件的基本函数。您已经在上面的代码中写过了,您只需要将其转换为带有参数UNC path和filespec的函数。让函数接受第三个形参List将找到的文件添加到。

2)如果你需要搜索子文件夹,创建一个函数,通过调用你在#1中编写的函数来搜索UNC路径的子文件夹,然后获得所有文件夹的列表,并为找到的每个文件夹调用自身(反过来,这些调用将调用子文件夹,等等)。这被称为递归。让这个函数获取一个List并将所有找到的文件添加到List中,方法是将它传递给#1函数。

3)获取你想要搜索的根UNC路径到List或Array中,然后调用foreach,将它们、filespec和初始空List传递给#2函数。

:

bool FindFiles(string uncPath, string fileSpec, List<FileInfo> found);
bool FildFilesSubfolders(string uncPath, string fileSpec, List<FileInfo> found);
string fileSpec = "whatever";
string[] uncPaths = { "abc", "def" };  // etc
List<FileInfo> found = new List<FileInfo>();
foreach (string nextPath in uncPaths)
{
    if (FindFilesSubfolders(nextPath, fileSpec, found))
        break;
}
foreach (FileInfo f in found)
{
    string fullname = f.FullName;
    Console.WriteLine(fullname);
    Console.Read();
}

最后一个想法:如果你正在搜索子目录,你担心两个UNC路径本质上是重复的(例如,c:'foo和c:'foo'foo2),你可以使用这个方法来检查另一个路径中的路径。

Edit:如果你发现你正在寻找的东西,想要提前退出,让函数返回一个布尔值,意思是你找到了你想要提前停止的东西。然后在循环中使用断点。我已经编辑了代码