有没有一种简单的方法可以复制包含其内容但没有子文件夹的文件夹?

Is there a simple way to copy a folder with its contents but without subfolders?

我正在尝试制作一个基于备份数据的应用程序。我想添加一个选项来复制文件夹及其内容,同时仅忽略子文件夹。

我使用 TDirectory.Copy('C:\folder','C:\folder2'); 来复制文件夹,但除了要复制的目录和复制位置之外,没有请求其他数据。

那么,有没有简单的方法可以做到这一点?

可以调用的函数也可以。

它并不完美,但您可以在此基础上制作自己的例程:

procedure TForm2.Button1Click(Sender: TObject);
var
  aSourceDir : String;
  aDestDir   : String;
  aFileList  : TStringDynArray;
  iFile      : Integer;
  aSourceFileName : String;
  aDestFileName   : String;
begin
  aSourceDir := 'C:\DEV\GitRepositories\TestProjects\WithStatementSample\';
  aDestDir   := 'C:\DEV\GitRepositories\TestProjects\WithStatementSample2\';

  aFileList := TDirectory.GetFiles( aSourceDir );

  if not ( TDirectory.Exists( aDestDir ) ) and
         ( Length( aFileList ) > 0 ) then
  begin
    TDirectory.CreateDirectory( aDestDir );
  end;

  for iFile := 0 to Pred( Length( aFileList ) ) do
  begin
    aSourceFileName := aFileList[ iFile ];
    aDestFileName   := IncludeTrailingPathDelimiter( aDestDir ) +
                       ExtractFileName( aFileList[ iFile ] );

    TFile.Copy( aSourceFileName, aDestFileName );
  end;
end;

这将简单地遍历在源目录中找到的每个文件并将其复制到目标目录。它不会复制文件夹,也不会复制文件夹的内容。

同样,它不是 100% fool/bullet 证明,因此如有必要,您必须根据自己的需要进行调整。