Script para limpar nomes de pastas

2

Tenho muitas pastas que precisam ser renomeadas com base em regras de par. exemplo de pastas:

-- Some.Folder.Name.Today.2009
-- Another.messed.Up.folder.1980
-- Third.messed.Up.folder.1980

Gostaria de ver se alguém tem um script rápido para renomear cada pasta para remover o ponto (.) do nome da pasta e também colocar parênteses por volta do ano para que pareça com isso

-- Some Folder Name Today (2009)
-- Another messed Up folder (1980)
-- Third messed Up folder (1980)

Muito obrigado!

    
por McLovin 30.01.2011 / 00:52

3 respostas

1

Perl lida bem com isso, algo assim deve ser suficiente:

use warnings;
use strict;
use File::Copy;

my $oldname;

opendir(my $d, ".") or die $!;
while(readdir $d) {
    if (-d $_ and $_ ne "." and $_ ne "..")
    {
        $oldname = $_;
        $_ =~ s/\./ /g;
        $_ =~ s/(\d{4})/($1)/g;
        move($oldname,$_);
    }
    }
closedir $d;

Apenas testado brevemente, sinta-se à vontade para jogá-lo / modificá-lo! Não é perfeito por qualquer meio. Hackeado juntos rapidamente;)

Observação: Em seu estado atual, ele deve ser executado dentro do diretório com os nomes das pastas desconfiguradas.

C:\Users\John\Desktop\folders>dir
 Volume in drive C has no label.
 Volume Serial Number is 8888-1666

 Directory of C:\Users\John\Desktop\folders

29/01/2011  07:14 PM              .
29/01/2011  07:14 PM              ..
29/01/2011  07:07 PM              some.folder.name.2008
29/01/2011  07:07 PM              some.folder.name.2009
29/01/2011  07:16 PM               282 ren.pl
               1 File(s)            282 bytes
               4 Dir(s)  53,349,425,152 bytes free

C:\Users\John\Desktop\folders>ren.pl

C:\Users\John\Desktop\folders>dir
 Volume in drive C has no label.
 Volume Serial Number is 8888-1666

 Directory of C:\Users\John\Desktop\folders

29/01/2011  07:16 PM              .
29/01/2011  07:16 PM              ..
29/01/2011  07:07 PM              some folder name (2008)
29/01/2011  07:07 PM              some folder name (2009)
29/01/2011  07:16 PM               282 ren.pl
               1 File(s)            282 bytes
               4 Dir(s)  53,349,425,152 bytes free
    
por 30.01.2011 / 01:20
1

Eu sugeriria executar os nomes dos arquivos por meio de um script sed curto. %código%. Substitui os pontos por espaços e depois circunda o ano com parênteses.

Certifique-se de que, se estiver digitalizando / operando nesses arquivos, eles sejam citados corretamente. Espaços são frequentemente usados como delimitadores entre itens.

    
por 30.01.2011 / 01:01
1

Em PowerShell (que, acredito, está instalado por padrão no Win7, embora eu não tenha uma máquina Windows Eu posso estar errado),

gci *.* | %{
 mi $_ ($_.name.replace('.', ' ').insert($_.name.lastindexof('.')+1, '(')+')')
}
    
por 30.01.2011 / 01:37

Tags