gpt4 book ai didi

delphi - 将所有内容从源目录复制到新目录 Delphi EX7

转载 作者:行者123 更新时间:2023-12-03 15:47:55 25 4
gpt4 key购买 nike

我的最终目标是将所有相关文件从一个文件夹复制到另一个文件夹。所以例如我们有C:\Users\Tool\Desktop\test\oldStuff。在文件夹 oldStuff 中,我们有更多文件夹以及一些 mp3mp4txt 文件。

现在我想做的是将所有小于 GB 的 mp4 文件复制到 C:\Users\Tool\Desktop\test\New_Stuff_Less_than_a_Gig,以及大于 GB 的 .mp4 文件到 C:\Users\Tool\Desktop\test\New_STuff_Bigger_than_a_Gig

我虽然这很容易,但我错了。到目前为止,暂时不用担心文件类型,所以只需将其设为 *.*

 procedure TForm4.Button1Click(Sender: TObject);
var
f: TSearchRec;
Dir: string;
begin
if not SelectDirectory(Dir,widestring(Dir),Dir) then Exit;
FileMode:=0;
if FindFirst(Dir+'\*.*',faAnyFile,f) = 0 then
repeat
try
if (f.Attr and faDirectory ) < $00000008 then
CopyFile(PChar(Dir+'\'+f.Name),PChar
('C:\Users\Tool\Desktop\test\new\'+f.Name),false);
except
on e: exception do
ShowMessage(E.Message);
end;
until findNext(f) <> 0
end;

这将复制所选文件夹中的任何内容,但不会从所选文件夹中的文件夹中复制任何内容。例如。如果我们有 C:\Users\Tool\Desktop\test\oldStuff\movie.mp4 它将复制 Movie.mp4 文件,但如果我们有 C:\Users\Tool\Desktop\test\oldStuff\movies\Movie.mp4 它不会复制 Movie.mp4 文件。我想我可以做这样的事情

CopyFile.size < 1000 (PChar('C:\Users\Tool\Desktop\test\oldStuff\*.*'+f.Name),
PChar('C:\Users\Tool\Desktop\test\new_Stuff\'+f.Name),false)

甚至只是

CopyFile (PChar('C:\Users\Tool\Desktop\test\old\*.*'+f.Name),
PChar('C:\Users\Tool\Desktop\test\new\'+f.Name),false);

但它没有复制任何内容。

最佳答案

这是一个示例(在 XE7 中完成),可以满足您的要求。显然,您需要修改它以满足您的需求;它具有硬编码的路径信息和文件掩码(*.png),并使用常量来决定文件是大还是小。

它基于此示例目录树:

D:\TempFiles
|--\Test
|-----\A
|-----\B
|--------\SubB
|-----\NewFiles
|-------\Large
L-------\Small

它会查找 D:\TempFiles\Test 及其子文件夹中的所有 .png 文件,并将等于或大于 10KB 的文件复制到 D:\TempFiles\NewFiles\Large 以及小于 10KB 的到 D:\TempFiles\NewFiles\Small

您需要将 IOUtilsTypes 添加到您的实现 uses 子句中。

procedure TForm1.Button1Click(Sender: TObject);
var
aLargeFiles: TStringDynArray;
aSmallFiles: TStringDynArray;
const
LargeSize = 10 * 1024;
SourcePath = 'D:\TempFiles\Test\';
begin
aLargeFiles := TDirectory.GetFiles(SourcePath, '*.png',
TSearchOption.soAllDirectories,
function (const Path: string; const SR: TSearchRec): Boolean
begin
Result := (SR.Size >= LargeSize);
end);
aSmallFiles := TDirectory.GetFiles(SourcePath, '*.png',
TSearchOption.soAllDirectories,
function(const Path: string; const SR: TSearchRec):Boolean
begin
Result := (SR.Size < LargeSize);
end);
CopyFilesToPath(aLargeFiles, 'D:\TempFiles\NewFiles\Large\');
CopyFilesToPath(aSmallFiles, 'D:\TempFiles\NewFiles\Small\');
end;

procedure TForm1.CopyFilesToPath(aFiles: array of string; DestPath: string);
var
InFile, OutFile: string;
begin
for InFile in aFiles do
begin
OutFile := TPath.Combine( DestPath, TPath.GetFileName( InFile ) );
TFile.Copy( InFile, OutFile, True);
end;
end;

关于delphi - 将所有内容从源目录复制到新目录 Delphi EX7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29183270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com