Renomeando todos os arquivos de uma pasta

Delphi

03/10/2007

Pessoal

To precisando pegar todos os arquivos tipo imagem de uma pasta e renomear todos eles para que fiquem de acordo com o que o cliente deseja.
Eu tenho os arquivos assim:

Capture_00001.JPG
Capture_00002.JPG
Capture_00003.JPG
Capture_00004.JPG

e preciso que fiquem assim:

46_P_20071003132711.JPG
46_P_20071003133000.JPG
46_P_20071003133002.JPG
46_P_20071003133004.JPG

Eu sei que o comando para renomear é o RenameFile(´NomeAntigo´,´NomeNovo´), mas o que eu não estou conseguindo é pegar todos os arquivos que começem por Capture_ para renomear com o novo nome.

Alguém pode me ajudar?

Att.


Marcos.gandin

Marcos.gandin

Curtidas 0

Respostas

Massuda

Massuda

03/10/2007

Pesquise o fórum por FindFirst. FindFirst, FindNext e FindClose são funções da SysUtils usadas para pesquisar diretórios.


GOSTEI 0
Marcos.gandin

Marcos.gandin

03/10/2007

Massuda

Obrigado pela ajuda, mas eu fiz o código que está abaixo e não renomeou nenhum arquivo, sendo que existem arquivos que desejo renomear na pasta.

if FindFirst(caminho + ´Capture_*.jpg´, faAnyFile, SR) = 0 then
  repeat
     arq := IntToStr(idPaciente) + ´_P_´;
     arq := arq + FormatDateTime(´yyyymmddhhnnss´, Now);
     RenameFile(SR.Name, arq + ´.jpg´);
  until FindNext(SR) <> 0;
FindClose(SR);


Sendo que [i:5976b57a7d]caminho[/i:5976b57a7d] possui o endereço da pasta que possui os arquivos.

O que pode estar acontecendo de errado ?


GOSTEI 0
Massuda

Massuda

03/10/2007

Faltou incluir o caminho nos dois parametros do RenameFile. Como não tem o caminho, ele está tentando renomear o arquivo na pasta corrente do programa, que costuma ser a pasta onde o programa está.


GOSTEI 0
Marcos.gandin

Marcos.gandin

03/10/2007

Massuda

Agora fucionou, mas tive que colocar um comando sleep(1000) após o comando Rename, pois em tempo de execução ele estava renomeando somente o primeiro arquivo (tenho 8 arquivos na pasta) e se eu vou depurando ele passo-a-passo aí sim consigo renomear todos os arquivos.
Mas será que isso é o correto fazer?


GOSTEI 0
POSTAR