Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Копирование папок и файлов с определенными фильтрами.  [new]
yemets63
Member

Откуда: Самара
Сообщений: 1180
Привет. не буду комментировать зачем, но надо, самому смешно, поэтому спрашиваю и прошу помочь.

мне нужно копировать Путь со всем его содержимым вложенными папками и файлами в другую папку или на диск.
желательно чтобы с фильтрами, *.* и самое интересное Дата или Время проихсождения файла, например копировать все папки, а вложенные в них файлы только те которые за последние два часа были созданы.

что нибудь из стандартного готового хочу.

спасибо.
9 окт 19, 13:27    [21990354]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
Vizit0r
Member

Откуда: Одесса
Сообщений: 662
System.IOUtils - TPath, TFile, TDirectory - все стандартно.

Дальше комбинируешь это все в соответствии со своими хотелками.
9 окт 19, 13:32    [21990358]     Ответить | Цитировать Сообщить модератору
 Re: Копирование папок и файлов с определенными фильтрами.  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 4076
Код для вывода списка файлов в папке и/или ее подпапках, в т.ч. по фильтру вида *.*:

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;
9 окт 19, 14:59    [21990519]     Ответить | Цитировать Сообщить модератору
 Re: Копирование папок и файлов с определенными фильтрами.  [new]
s62
Member

Откуда: Жуковский
Сообщений: 1001
yemets63,

можно посмотреть (в консоли) команду xcopy и её ключ /D

Есть еще robocopy, вроде более мощная команда, но я ей не пользовался.
9 окт 19, 15:48    [21990595]     Ответить | Цитировать Сообщить модератору
 Re: Копирование папок и файлов с определенными фильтрами.  [new]
s62
Member

Откуда: Жуковский
Сообщений: 1001
s62,

в xcopy только дата, времени нет.
9 окт 19, 15:56    [21990607]     Ответить | Цитировать Сообщить модератору
 Re: Копирование папок и файлов с определенными фильтрами.  [new]
yemets63
Member

Откуда: Самара
Сообщений: 1180
спасибо всем.

просто залача поступила, как бы это сказать и отказать нельзя и время тратить ..., хотел списать, но как всегда пришлось делать.
сделал, копирует, перегоняет при том надо было чуть проще даже чем я даже думал

IOUtils - неплохая штука для быстрого изготовления того что надо
9 окт 19, 18:22    [21990756]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить