ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

mover arquivos

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
fabiodurgante
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 8 de Novembro de 2013
Mensagens: 197

MensagemEnviada: Dom Abr 08, 2018 10:31 am    Assunto: mover arquivos Responder com Citação

ola, estou tentando selecionar uma pasta e mover todos os arquivos que estao dentro da pasta selecionada por data de modificacao exemplo mover todos arquivos da pasta selecionada arquivos modificados 01/01/2010 ate 01/01/2011

nao consigo pegar o caminho da pasta selecionado uso o comando para selecionar 1 arquivo somente

Código:

caminho:= ParamStr(0);
    CAMINHO := ExtractFilePath(Application.ExeName);
    ShowMessage(caminho);
    if OpenDialog1.Execute then
      if Application.MessageBox('Deseja Realmente Carregar o Arquivo Selecionado?',pchar(application.title),+MB_ICONQUESTION+MB_YESNO+MB_DEFBUTTON1) = id_yes then
      begin
       AssignFile(ArqTxt,OpenDialog1.FileName); // Abrir o arquivo
            Reset(ArqTxt);

como posso selecionar o caminho da pasta ??? e mover arquivos por data modificacao ????
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
lincoln.mac
Novato
Novato


Registrado: Sexta-Feira, 16 de Fevereiro de 2018
Mensagens: 22

MensagemEnviada: Seg Abr 09, 2018 11:01 pm    Assunto: Re: mover arquivos Responder com Citação

fabiodurgante escreveu:
ola, estou tentando selecionar uma pasta e mover todos os arquivos que estao dentro da pasta selecionada por data de modificacao exemplo mover todos arquivos da pasta selecionada arquivos modificados 01/01/2010 ate 01/01/2011

nao consigo pegar o caminho da pasta selecionado uso o comando para selecionar 1 arquivo somente

Código:

caminho:= ParamStr(0);
    CAMINHO := ExtractFilePath(Application.ExeName);
    ShowMessage(caminho);
    if OpenDialog1.Execute then
      if Application.MessageBox('Deseja Realmente Carregar o Arquivo Selecionado?',pchar(application.title),+MB_ICONQUESTION+MB_YESNO+MB_DEFBUTTON1) = id_yes then
      begin
       AssignFile(ArqTxt,OpenDialog1.FileName); // Abrir o arquivo
            Reset(ArqTxt);

como posso selecionar o caminho da pasta ??? e mover arquivos por data modificacao ????


Boa noite Fábio!

Aqui tem um link que tem o código para você comparar a data de modificação...

https://www.devmedia.com.br/dicas-consultar-o-atributo-ultima-modificacao-de-um-arquivo/1125

Só vc adaptar este código à sua necessidade...

Eu faria + ou - assim a idéia:
Adicionaria um DirectoryListBox e um FileListBox ligado à ele..

automaticamente o filelistbox irá mostrar os arquivos contidos na pasta que você clicar..

Aí eu Faria um LOOP COM FOR por exemplo.. verificando arquivo por arquivo deste FILELISTBOX verificando arquivo por arquivo.... Caso a data seja a seu gosto, execute o comando desejado (de mover, no caso) ....

For x := 0 to FileListbox1.Count - 1 do
begin
verificaarquivo(FileListBox.Item[x]);
end;

Eu sou novato em Delphi.. entao me desculpe qq erro!

Um abraço!!!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Ter Abr 10, 2018 10:25 am    Assunto: Responder com Citação

Faça um teste com os códigos abaixo:

Declare ShellApi na uses do form.

Função para pegar a data de modificação do arquivo:

Código:
function FileLastModified(const TheFile: string): TDate;
var
  FileH: THandle;
  LocalFT: TFileTime;
  DosFT: DWORD;
  LastAccessedTime: TDateTime;
  FindData: TWin32FindData;
begin
  FileH := FindFirstFile(PChar(TheFile), FindData);

  if FileH <> INVALID_HANDLE_VALUE then
    if (FindData.dwFileAttributes AND FILE_ATTRIBUTE_DIRECTORY) = 0 then
    begin
      FileTimeToLocalFileTime(FindData.ftLastWriteTime, LocalFT);
      FileTimeToDosDateTime(LocalFT, LongRec(DosFT).Hi, LongRec(DosFT).Lo);
      LastAccessedTime := FileDateToDateTime(DosFT);
      Result := LastAccessedTime;
    end;
end;


Procedure para mover arquivo:

Código:
procedure MoverArquivo(DirOrigem, DirDest: String);
var
  ShFileOpStruct: TShFileOpStruct;
begin
  FillChar(ShFileOpStruct, Sizeof(TShFileOpStruct), 0);
  with ShFileOpStruct do
  begin
    Wnd := Application.Handle;
    wFunc := FO_MOVE; { Parametro de cópia do arquivo ou pasta }
    pFrom := PChar(DirOrigem + #0); { diretório origem }
    pTo := PChar(DirDest + #0); { diretório  destino }
    fFlags := FOF_ALLOWUNDO or FOF_SIMPLEPROGRESS or FOF_NOCONFIRMATION;
  end;
  try
    ShFileOperation(ShFileOpStruct);
  except
    on E: Exception do
      ShowMessage(' Houve um erro na cópia das imagens: ' + E.Message);
  end;
end;


Exemplo de uso, coloque 1 button e 2 DateTimePicker no form:

Código:
var
  SR: TSearchRec;
  I: integer;
  PastaOrigem, PastaDestino: string;
  DataInicio, DataFim, DataArquivo: TDate;
begin
  PastaOrigem := 'C:\Origem\'; // Altere a pasta de origem
  PastaDestino := 'C:\Destino\'; // Altere a pasta de destino

  DataInicio := Trunc(DateTimePicker1.Date); // Selecione o intervalo de início
  DataFim := Trunc(DateTimePicker2.Date); // Selecione o intervalo do fim

  I := FindFirst(PastaOrigem + '*', faArchive, SR);

  while I = 0 do
  begin
    DataArquivo := Trunc(FileLastModified(PastaOrigem + SR.Name));

    if (DataArquivo >= DataInicio) and (DataArquivo <= DataFim) then
      MoverArquivo(PastaOrigem + SR.Name, PastaDestino + SR.Name);

    I := FindNext(SR);
  end;
end;

_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB