# Last update: 2008/02/15 # # RENAMER V 0.1 # # (p) Jerry Nagasaki # # # Generates a Rename-Batch-File of an input file list # # INPUT: brwlist (file list) # OUTPUT: renfiles.bat (renamer batch file with reanmed file format: # [String][Formated Running Number].[Extension]) # # NOTE: File names with "double extension" like "abc.def.jpg" # are NOT allowed! # set different input file name here if desired $inputfile = "brwlist"; open(FILE, "<$inputfile") || die "Could not open '$inputfile'\n"; my @infile = ; close(FILE); my $length = @infile; if ($length == 0) { die "'$inputfile' is empty!\n"; } # Get file names and extensions my @files=""; my @ext=""; foreach (@infile) { my $foo = $_; # get file name $foo =~ s/\..+$//go; chomp ($foo); push (@files, $foo); print "$foo : "; $foo = $_; # get extension $foo =~ s/.+\.//go; chomp ($foo); push (@ext, $foo); print "$foo\n"; } # user dialog print "\nEnter desired renaming file name letter(s): "; my $letter = ; chomp ($letter); print "Enter desired renaming start number: "; my $startnum = ; chomp ($startnum); print "Enter desired number of chars per numbering (1 - 4): "; my $maxnum = ; chomp ($maxnum); # generate batch file my @outfile = ""; push (@outfile, "rem =========================================================================\n"); push (@outfile, "rem RENFILES.BAT - generated by RENAMER.PL\n"); push (@outfile, "rem (p) 2008 by Jerry Nagasaki\n"); push (@outfile, "rem =========================================================================\n\n"); push (@outfile, "rem -------------------------------------------------------------------------\n"); push (@outfile, "rem FIRST STAGE:\n"); push (@outfile, "rem Rename files into dummy file names to prevent double names\n"); push (@outfile, "rem -------------------------------------------------------------------------\n\n"); for (my $i = 1; $i <= $length; $i++) { my $filename = $files[$i].".".$ext[$i]; my $number = zeroextend($i - 1, 4); my $foo = "ren $filename \@\@\@$number.$ext[$i]\n"; push (@outfile, $foo); } push (@outfile, "\nrem -----------------------------------------------------------------------\n"); push (@outfile, "rem SECOND STAGE:\n"); push (@outfile, "ren Rename dummy names to desired file names\n"); push (@outfile, "rem -------------------------------------------------------------------------\n\n"); for (my $i = 1; $i <= $length; $i++) { my $number1 = zeroextend($i - 1, 4); my $number2 = zeroextend($i - 1 + $startnum, $maxnum); my $foo = "ren \@\@\@$number1.$ext[$i] $letter$number2.$ext[$i]\n"; push (@outfile, $foo); } open(FILE, ">./renfiles.bat"); print FILE @outfile; close(FILE); # Sub routines # add necessary leading zeros sub zeroextend { $num = shift; $maxnum = shift; # may to be optimized by "use switch" if ($maxnum == 4) { $retnum = sprintf ("%.4d", $num); } elsif ($maxnum == 3) { $retnum = sprintf ("%.3d", $num); } elsif ($maxnum == 2) { $retnum = sprintf ("%.2d", $num); } else { $retnum = sprintf ($num); } return $retnum; }