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

sh7euo9m  于 2022-12-26  发布在  其他
关注(0)|答案(2)|浏览(193)

我正试图使一个应用程序是基于备份数据。我想添加一个选项,以复制文件夹的内容,而忽略子文件夹只。
我使用TDirectory.Copy('C:\folder','C:\folder2');来复制文件夹,但除了要复制的目录和复制到哪里之外,没有请求其他数据。
那么,有没有一个简单的方法来实现这一点?
一个可以调用的函数也可以工作。

dvtswwa3

dvtswwa31#

它并不完美,但你可以在此基础上制定自己的日常生活:

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%傻瓜/防弹虽然,所以你将不得不适应您的需要,如果必要的。

fykwrbwg

fykwrbwg2#

Delphi XE2专业版
这将打开Command.com,并将整个文件夹及其子文件夹和所有文件复制到另一个驱动器,然后消失。

WinExec(PAnsiChar('XCopy C:\Dir1 E:\Dir1 /E /H /C /I'),SW_SHOWNORMAL);

接下来...
这将打开Command.com,并将整个文件夹及其子文件夹和所有文件复制到同一驱动器上名为C:\NewDir的现有文件夹中。生成的C:\NewDir将包含名为Dir1的文件夹及其所有子文件夹和文件。

WinExec(PAnsiChar('XCopy C:\Dir1 C:\NewDir /E /H /C /I'),SW_SHOWNORMAL);

相关问题