mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
2.9 KiB
131 lines
2.9 KiB
#
|
|
# nameconv.pl
|
|
#
|
|
# Perl script for renaming files with long file names into short ones
|
|
# The script also generates a batch script that can be used for renaming
|
|
# files back to original name
|
|
#
|
|
# Author:
|
|
# Murali R. Krishnan (MuraliK) 30-Jan-1996
|
|
#
|
|
# Usage: perl nameconv.pl path
|
|
#
|
|
#
|
|
|
|
|
|
sub printCopyright {
|
|
|
|
print "Name Conversion Utility 0.1\n\n";
|
|
|
|
} # sub Copyright
|
|
|
|
|
|
|
|
sub printUsage {
|
|
|
|
print " Usage: perl nameconv.pl <path>\n\n";
|
|
print " <path> should specify the path for the directory containing\n";
|
|
print " the files whose name should be compressed.\n";
|
|
print " Two files packer.cmd and unpacker.cmd are created in";
|
|
print " that directory.\n";
|
|
|
|
} # sub printUsage()
|
|
|
|
|
|
sub DirWalkAndRenameFiles {
|
|
|
|
local ($path) = @_;
|
|
local $fileCount = 0;
|
|
local %NewNames;
|
|
|
|
print STDERR "\nProcessing files in $path\n";
|
|
|
|
# read directory entries
|
|
opendir( DIRHANDLE, $path);
|
|
@allfiles = readdir(DIRHANDLE);
|
|
closedir( DIRHANDLE);
|
|
|
|
foreach $file (@allfiles) {
|
|
|
|
if ( $file eq "." || $file eq "..") {
|
|
# do nothing
|
|
} else {
|
|
$fileCount += 1;
|
|
$NewNames{$file} = $fileCount;
|
|
}
|
|
}
|
|
|
|
return (%NewNames);
|
|
} # sub DirWalkAndRenameFiles()
|
|
|
|
|
|
#
|
|
# Main program starts here.
|
|
#
|
|
|
|
printCopyright();
|
|
|
|
# -1 ==> no argument specified for the script.
|
|
if ($#ARGV == -1) {
|
|
|
|
printUsage();
|
|
exit();
|
|
}
|
|
|
|
$packerFile = "packer.cmd";
|
|
$unpackerFile = "unpacker.cmd";
|
|
|
|
foreach $path ( @ARGV) {
|
|
%NewNames = DirWalkAndRenameFiles($path);
|
|
|
|
$dest = "$path\\$packerFile";
|
|
print "\n Generating the long to short rename script: $dest\n";
|
|
open(DEST, ">$dest") || die "unable to open file $dest\n";
|
|
select(DEST); $| = 1; # select unbuffered output.
|
|
$^ = WRITE_PACK_TOP;
|
|
$~ = WRITE_PACK_FORMAT;
|
|
while( ($file, $fileCount) = each(%NewNames)) {
|
|
write(DEST);
|
|
}
|
|
close(DEST);
|
|
|
|
select(STDOUT);
|
|
|
|
$dest1 = "$path\\$unpackerFile";
|
|
print "\n Generating the short to long rename script: $dest1\n";
|
|
open(DEST1, ">$dest1") || die "unable to open file $dest1\n";
|
|
select(DEST1); $| = 1; # select unbuffered output.
|
|
$^ = WRITE_UNPACK_TOP;
|
|
$~ = WRITE_UNPACK_FORMAT;
|
|
while( ($file, $fileCount) = each(%NewNames)) {
|
|
write(DEST1);
|
|
}
|
|
close(DEST1);
|
|
|
|
} # foreach
|
|
|
|
|
|
#########################################################################
|
|
#
|
|
# Formats for printing data
|
|
#
|
|
#########################################################################
|
|
|
|
format WRITE_PACK_TOP =
|
|
REM Auto generated Script to rename LONG file names to SHORT file names.
|
|
.
|
|
|
|
format WRITE_PACK_FORMAT =
|
|
ren @<<<<<<<<<<<<<<<<<<<<<<<<< @######.pak
|
|
$file $fileCount
|
|
.
|
|
|
|
format WRITE_UNPACK_TOP =
|
|
REM Auto generated Script to rename SHORT file names to LONG file names.
|
|
.
|
|
|
|
format WRITE_UNPACK_FORMAT =
|
|
ren @#####.pak @<<<<<<<<<<<<<<<<<<<<<<<<<
|
|
$fileCount $file
|
|
.
|
|
|