Копирование папок и файлов с определенными фильтрами.

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 - неплохая штука для быстрого изготовления того что надо