Renomear aquivo em massa

Delphi

14/06/2013

Boa tarde, preciso renomear vários arquivos (nomes diferentes) para um nome de minha escolha, por exemplo

tenho um diretório com os seguintes arquivos

[vox]2.Broke.Girls.S01E01
[vox]2.Broke.Girls.S01E02
[vox]2.Broke.Girls.S01E03
[vox]2.Broke.Girls.S01E04
[vox]2.Broke.Girls.S01E05
[vox]2.Broke.Girls.S01E06

quero mudar para

2 Broke Girls S01E01
2 Broke Girls S01E02
2 Broke Girls S01E03
2 Broke Girls S01E04
2 Broke Girls S01E05
2 Broke Girls S01E06


ou seja quero trocar [b][vox]2.Broke.Girls[/b] para [b]2 Broke Girls[/b]
Fábio Cruz

Fábio Cruz

Curtidas 0

Respostas

Fábio Cruz

Fábio Cruz

14/06/2013

Ninguém?
GOSTEI 0
Charles Segundo

Charles Segundo

14/06/2013

O que você pode fazer é o seguinte.

1 - Usar uma função pra pegar todos os arquivos do Diretório.
2 - Um While pra renomear todo mundo, alterando para o que você quer
> Se quiser usar variáveis, pra poder alterar os numeros na renomeação, exemplo 2 Broke Girls S[X]E[Y] ( pq ai ele renomeia 01,02,03,04 e etc...
3 - É bom tratar as strings que vai ler, para saber qual o episódio que vc ta renomeando ( exemplo. procure um numero 3, pra saber que é o episodio 3, e etc...)

Tudo depende de como você quer fazer... mas eu ainda acho mais simples renomear na mao... do que fazer um programa pra isso..

:)

Atenciosamente.
GOSTEI 0
Fábio Cruz

Fábio Cruz

14/06/2013

O que você pode fazer é o seguinte.

1 - Usar uma função pra pegar todos os arquivos do Diretório.
2 - Um While pra renomear todo mundo, alterando para o que você quer
> Se quiser usar variáveis, pra poder alterar os numeros na renomeação, exemplo 2 Broke Girls S[X]E[Y] ( pq ai ele renomeia 01,02,03,04 e etc...
3 - É bom tratar as strings que vai ler, para saber qual o episódio que vc ta renomeando ( exemplo. procure um numero 3, pra saber que é o episodio 3, e etc...)

Tudo depende de como você quer fazer... mas eu ainda acho mais simples renomear na mao... do que fazer um programa pra isso..

:)

Atenciosamente.



Realmente seria mais fácil fazer manualmente, mas vamos supor que eu tenha mais de 20 temporadas numa mesma pasta, como funcionaria?
GOSTEI 0
Charles Segundo

Charles Segundo

14/06/2013

O que você pode fazer é o seguinte.

1 - Usar uma função pra pegar todos os arquivos do Diretório.
2 - Um While pra renomear todo mundo, alterando para o que você quer
> Se quiser usar variáveis, pra poder alterar os numeros na renomeação, exemplo 2 Broke Girls S[X]E[Y] ( pq ai ele renomeia 01,02,03,04 e etc...
3 - É bom tratar as strings que vai ler, para saber qual o episódio que vc ta renomeando ( exemplo. procure um numero 3, pra saber que é o episodio 3, e etc...)

Tudo depende de como você quer fazer... mas eu ainda acho mais simples renomear na mao... do que fazer um programa pra isso..

:)

Atenciosamente.



Realmente seria mais fácil fazer manualmente, mas vamos supor que eu tenha mais de 20 temporadas numa mesma pasta, como funcionaria?


Caso esteja todos os arquivos juntos. você deve procurar um padrão no nome, e verificar por padrão. exemplo.

G.O.T-S03E01.avi
G.O.T-S03E02.avi
G.O.T-S03E03.avi

no caso oq vc vai procurar é, a substring S03, ai vc saberá que é a temporada 3. vc pode também fazer com que a quantidade de temporadas seja variável, ou seja, vc insere quantas temporadas quer. e manda um while de 1 até QuantidadeTemporadas -1 , entendeu?!

GOSTEI 0
Diego Garcia

Diego Garcia

14/06/2013

procedure TfrmPrincipal.RenomearArquivos;
var
  SearchRec : TSearchRec;
  i : integer;
  sDir : string;
  sNome : string;
begin
  sDir := '';//o diretório dos arquivos aqui
  i := FindFirst(sDir + '\[vox]*',0,SearchRec);
  while i = 0 do
  begin
    sNome := StringReplace(SearchRec.Name,'[vox]','',[]);
    sNome := StringReplace(sNome,'.',EmptyStr,[rfReplaceAll]);
    RenameFile(SearchRec.Name,sNome);
    i := FindNext(searchRec);
  end;
end;


Fiz de cabeça, sendo assim não testei e nem sei se compila =P
Da uma testada, qualquer coisa da um toque...

Essa função basicamente procura todos os arquivos no diretório especificado, que comecem com '[vox]', depois sai renomeando eles tirando o [vox] e os pontos.
GOSTEI 0
Fábio Cruz

Fábio Cruz

14/06/2013

procedure TfrmPrincipal.RenomearArquivos;
var
  SearchRec : TSearchRec;
  i : integer;
  sDir : string;
  sNome : string;
begin
  sDir := '';//o diretório dos arquivos aqui
  i := FindFirst(sDir + '\[vox]*',0,SearchRec);
  while i = 0 do
  begin
    sNome := StringReplace(SearchRec.Name,'[vox]','',[]);
    sNome := StringReplace(sNome,'.',EmptyStr,[rfReplaceAll]);
    RenameFile(SearchRec.Name,sNome);
    i := FindNext(searchRec);
  end;
end;


Fiz de cabeça, sendo assim não testei e nem sei se compila =P
Da uma testada, qualquer coisa da um toque...

Essa função basicamente procura todos os arquivos no diretório especificado, que comecem com '[vox]', depois sai renomeando eles tirando o [vox] e os pontos.


Interessante, mas ele não está efetivando na pasta as alterações
GOSTEI 0
Diego Garcia

Diego Garcia

14/06/2013

você alterou essa linha:

sDir := '';//o diretório dos arquivos aqui


post aqui como ficou o seu código final.
GOSTEI 0
Fábio Cruz

Fábio Cruz

14/06/2013

Alterei sim
GOSTEI 0
Diego Garcia

Diego Garcia

14/06/2013

amigo, post aqui como ficou o seu código final.
GOSTEI 0
Fábio Cruz

Fábio Cruz

14/06/2013

amigo, post aqui como ficou o seu código final.


Já descobri o que era


RenameFile(sDir + '/' + SearchRec.Name, sDir + '/' + sNome);


Faltou informar a pasta origem e destino, no caso a mesma.
GOSTEI 0
José

José

14/06/2013

Tendo entendido que a duvida foi sanada, estou finalizando este tópico.
GOSTEI 0
POSTAR