在文件夹中搜索大量特定的文件名

我有一个包含很多文件的文件夹,即:

C:\Tmp\Input\random00001.txt
C:\Tmp\Input\random00002.txt
C:\Tmp\Input\random00003.txt
...
C:\Tmp\Input\random10000.txt

我有一个很大的列表(大约两三百个),需要复制到另一个文件夹,即:

random00002.txt
random00009.txt
random04001.txt
...
random90000.txt

我尝试使用Windows搜索使用OR关键字分隔文件名,但是文件太多,它会削减过滤器字符串...

在文件夹中搜索大量特定的文件名

我还尝试编写了一个函数,该函数允许使用过滤器复制文件,但似乎不适用于OR关键字

uses
  SysUtils,IOUtils;

procedure Copyfiles(const AInputPath : string; const AOutputPath : string; const AFilter : string = '*.*');
var
  Found : boolean;
  Res: TSearchRec;
begin
  Found := (FindFirst(AInputPath + AFilter,faAnyFile,Res) = 0);
  while(Found) do
  begin
    if((Res.Attr AND faDirectory = 0) AND (Res.Name <> '.') AND (Res.Name <> '..')) then
    begin
      TFile.Copy(AInputPath + Res.Name,AOutputPath + Res.Name);
    end;
    Found := (FindNext(Res) = 0);
  end;
  FindClose(Res);
end;
newke2730 回答:在文件夹中搜索大量特定的文件名

如果有要复制的名称列表,只需检查当前名称是否属于此列表

if((Res.Attr AND faDirectory = 0) AND (Res.Name <> '.') AND (Res.Name <> '..')) then
    begin
      if  Res.Name in Names then
        TFile.Copy(AInputPath + Res.Name,AOutputPath + Res.Name);
    end;

if Res.Name in Names的实现取决于细节-名称可能是Dictionary,StringList,已排序的一个,依此类推((您尚未指定细节)

本文链接:https://www.f2er.com/2577676.html

大家都在问