目录中有以下文件列表:
- 01 出生 - 被赞美 - Kissed.flac
- 02 万岁.flac
- 03 你知道了.flac
- 04 在这个洞里.flac
- 05 Wälsungenblut.flac
- ... N. 0N 文件名
#是的,这些是 Oomph 的歌曲!
并在 Perl 上执行以下程序:
use warnings;
use strict;
use utf8;
use open qw( :encoding(UTF-8) :std );
my @dirnames;
while ( (my $dirname = <>) =~ /\S/ ) {
chomp($dirname);
push (@dirnames, $dirname);
}
foreach my $dirname (@dirnames) {
opendir (DIR, $dirname);
while ( my $file = readdir(DIR) ) {
if(length($file)>5) {
print $file , "\n";
my $newfile;
$newfile = substr($file, 0, 2);
$newfile .= '.';
$newfile .= substr($file, 2);
rename ($dirname . '\\' . $file, $dirname . '\\' . $newfile) or die $!;
}
}
closedir DIR;
}
获取目录列表并通过在数字后添加点来重命名其中的文件。
程序在所有文件上都可以正常工作,但是当它尝试重命名文件名中带有变音符号的文件时,Windows PowerShell 和命令行都会在带有函数Permission denied
的字符串处抛出错误。rename
各位大侠怎么解决这个问题?
UPD。软件:
- 视窗 8 x64
- ActiveState ActivePerl 1601 (Perl 5.16)