【问题标题】:Perl script that copies files listed in text file only copies the last file successfully复制文本文件中列出的文件的 Perl 脚本仅成功复制最后一个文件
【发布时间】:2013-06-22 02:41:35
【问题描述】:

我有一个 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);
}

复制命令的输出表明它为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);
}

提前致谢。

【问题讨论】:

    标签: perl file-io copy


    【解决方案1】:

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

    chomp($accessFile);
    

    【讨论】:

      猜你喜欢
      • 2017-08-27
      • 2016-03-20
      • 2014-10-13
      • 1970-01-01
      • 2017-12-25
      • 2023-03-02
      • 1970-01-01
      • 1970-01-01
      • 2019-09-16
      相关资源
      最近更新 更多