 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
fabiodurgante Aprendiz

Registrado: Sexta-Feira, 8 de Novembro de 2013 Mensagens: 197
|
Enviada: Dom Abr 08, 2018 10:31 am Assunto: mover arquivos |
|
|
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 |
|
 |
lincoln.mac Novato

Registrado: Sexta-Feira, 16 de Fevereiro de 2018 Mensagens: 22
|
Enviada: Seg Abr 09, 2018 11:01 pm Assunto: Re: mover arquivos |
|
|
| 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 |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Ter Abr 10, 2018 10:25 am Assunto: |
|
|
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 |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|