Perl хорошо с этим справляется, этого должно быть достаточно:
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;
Только проверенный кратко, не стесняйтесь гольф / изменить его! Это не идеально ни в коем случае. Взломали это вместе быстро;)
Примечание. В текущем состоянии следует запустить форму внутри каталога с искаженными именами папок.
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