1

我有一个 Perl 脚本,它从文件中读取文件列表accessFiles.txt,并将它们复制到另一个位置。

open my $accessFiles, "$scriptDir\\accessFiles.txt" or die "Could not open access file list $!";

while (my $accessFile = <$accessFiles>) {
    my($file, $dir, $ext) = fileparse($accessFile, qr/\.[^.]*/);
    my $accessDir = "$localDir\\AccessFiles\\$file";
    my $accessCopy = "$accessDir\\$file$ext";

    system("rmdir","/S", "/Q",$accessDir);
    system("mkdir",$accessDir);
    system("copy", $accessFile, $accessCopy);
}

copy 命令的输出表明它为 中的每个文件复制了一个文件accessFiles.txt,但只复制了最后一个文件。

我在复制之前和之后添加了输入语句,并且我在任何时候都看不到复制目录中的任何其他文件。

现在,如果我将脚本更改为从文件数组中读取,那么它可以完美运行。

my @files = ('\\\\sourceshare\acc1.accdb', '\\\\sourceshare\acc2.accdb');

foreach my $accessFile (@files) {
    my($file, $dir, $ext) = fileparse($accessFile, qr/\.[^.]*/);
    my $accessDir = "$localDir\\AccessFiles\\$file";
    my $accessCopy = "$accessDir\\$file$ext";
    system("rmdir","/S", "/Q",$accessDir);
    system("mkdir",$accessDir);
    system("copy", $accessFile, $accessCopy);
}

提前致谢。

4

1 回答 1

3

您没有删除尾随换行符。添加

chomp($accessFile);
于 2013-06-21T18:41:35.607 回答