如何获取名称中也包含点的目录的子文件夹名称?

How to get sub folder names of a directory that also contain dots in the name?

我正在尝试用一个目录中的所有文件夹名称填充一个字符串列表。

以下是我如何做到这一点的摘录:

var
  SL: TStringList;
  SearchAttr: LongInt;
  SR: TSearchRec;
begin
  SL := TStringList.Create;
  try
    SearchAttr := (faDirectory);

    if FindFirst(Directory + '\*.', SearchAttr, SR) = 0 then
    begin
      try
        repeat
          if (SR.Attr and faDirectory) <> 0 then
          begin
            if (SR.Name <> '.') and (SR.Name <> '..') then
            begin
              SL.Add(Directory + SR.Name);
            end;
          end;
        until
          FindNext(Sr) <> 0;
        finally
          FindClose(SR);
        end;
      end;
    end;

    // do something with string list folder names      
  finally
    SL.Free;
  end;
end;

我访问的父文件夹包含220个子文件夹,但例程只添加了216个文件夹名称。经过一番比较和调试,我发现4个没有添加的文件夹名称中包含点。

为了测试,我创建了一个名为 "Test Folder" 的文件夹,并在其中添加了另外 9 个名为:

的新文件夹
  • Folder 1
  • Folder 2
  • Folder 3
  • Folder 4
  • Folder 5
  • Folder .6
  • Folder 7
  • F.O.L.D.E.R 8
  • Folder 9

当使用"Test Folder"作为父目录时,只会添加以下子文件夹:

  • Folder 1
  • Folder 2
  • Folder 3
  • Folder 4
  • Folder 5
  • Folder 7
  • Folder 9

我一直在试验 SR.Name <> '.'SR.Name <> '..'SR.Name[1] <> '.' 等,但没有成功。

如何修改代码以允许名称中包含点的文件夹名称并将它们添加到我的字符串列表中?

谢谢

将搜索字符串从 '*.' 更改为 '*'

您的搜索字符串仅匹配具有空扩展名的对象。您想要匹配所有对象,无论它们是否具有扩展名。