下面的脚本只是简单实现了功能而已,没有做任何优化和改进。
#!/usr/bin/perl
my $dir = "C:/a";
#获得一个目录下所有的文件列表,尚未排除其他子目录,需修改
opendir(DH, $dir) or die "Couldn't open $dir for reading: $!";
@files = ();
print "start\n";
while( defined ($file = readdir(DH)) ) {
next if $file =~ /^\.\.?$/; # skip . and ..
my $filename = "$dir/$file";
print "$filename\n";
push(@files, $filename);
}
closedir(DH);
#批量更改文件名称为小写,在windows系统因为大小写都认为是同一个文件,因此注释了判断
#是否已经存在新文件名的可能。实际上有可能覆盖原有的文件!需要仔细考虑
my $newfile;
foreach(@files){
$newfile = $_;
for ($newfile) { tr/A-Z/a-z/ } #更改文件名称字符串为小写
#if (-e $newfile) {
# warn "can't rename $_ to $newfile: $newfile exists\n";
#} els
if (rename $_, $newfile) {
## success, do nothing
} else {
warn "rename $_ to $newfile failed: $!\n";
}
}
[ 本帖最后由 somis 于 2008-4-15 22:28 编辑 ]