Копирование папок и файлов с определенными фильтрами.
yemets63
Дата: 09.10.2019 13:27:34
Привет. не буду комментировать зачем, но надо, самому смешно, поэтому спрашиваю и прошу помочь.
мне нужно копировать Путь со всем его содержимым вложенными папками и файлами в другую папку или на диск.
желательно чтобы с фильтрами, *.* и самое интересное Дата или Время проихсождения файла, например копировать все папки, а вложенные в них файлы только те которые за последние два часа были созданы.
что нибудь из стандартного готового хочу.
спасибо.
Vizit0r
Дата: 09.10.2019 13:32:01
System.IOUtils - TPath, TFile, TDirectory - все стандартно.
Дальше комбинируешь это все в соответствии со своими хотелками.
JayDi
Дата: 09.10.2019 14:59:54
Код для вывода списка файлов в папке и/или ее подпапках, в т.ч. по фильтру вида *.*:
function GetFilesList(ADirName: string; AFileMask: string; ASearchSubdirs: Boolean): TStringList;
var
list: TStringList;
I: Integer;
normalDir: string;
options: TSearchOption;
filesList: TStringDynArray;
begin
// получает список файлов в папке и всех подпапках по маске вида *.*
// автор: jaydi85@gmail.com
if ADirName = '' then
begin
raise Exception.Create('ERROR! ADirName must be non empty.');
end;
list := TStringList.Create;
Result := list;
// доп проверка, т.к. если папки нет, то TDirectory.GetFiles вызывет исключение
if not DirectoryExists(ADirName) then
begin
Exit;
end;
if not EndsText('\', ADirName) then
begin
normalDir := ADirName + '\';
end
else
begin
normalDir := ADirName;
end;
// новая версия поиска через IOUtils
if ASearchSubdirs then
begin
options := TSearchOption.soAllDirectories;
end
else
begin
options := TSearchOption.soTopDirectoryOnly;
end;
filesList := TDirectory.GetFiles(normalDir, AFileMask, options);
for I := 0 to Length(filesList) - 1 do
begin
list.Add(filesList[I]);
end;
end;
s62
Дата: 09.10.2019 15:48:20
yemets63,
можно посмотреть (в консоли) команду xcopy и её ключ /D
Есть еще robocopy, вроде более мощная команда, но я ей не пользовался.
s62
Дата: 09.10.2019 15:56:33
s62,
в xcopy только дата, времени нет.
yemets63
Дата: 09.10.2019 18:22:32
спасибо всем.
просто залача поступила, как бы это сказать и отказать нельзя и время тратить ..., хотел списать, но как всегда пришлось делать.
сделал, копирует, перегоняет при том надо было чуть проще даже чем я даже думал
IOUtils - неплохая штука для быстрого изготовления того что надо