简体   繁体   English

用于移动文件的 Perl 脚本

[英]Perl script for moving files

I have developed a Perl script for data movement from one folder to another.我开发了一个 Perl 脚本,用于将数据从一个文件夹移动到另一个文件夹。 I have one folder in D drive ( D:\\projectx\\MUX4TO1_TB ).我在 D 盘( D:\\projectx\\MUX4TO1_TB )中有一个文件夹。 Inside that folder, I have to create a new folder named newfolder .在该文件夹中,我必须创建一个名为newfolder的新文件夹。 Then I want to search for .ps files inside MUX4TO1_TB , and if any are found, I want to move them to newfolder .然后我想在MUX4TO1_TB搜索.ps文件,如果找到,我想将它们移动到newfolder

The code I have developed is 70% working, but data movement is not happening from MUX4TO1_TB to newfolder .我开发的代码有 70% 的工作MUX4TO1_TB ,但没有发生从MUX4TO1_TBnewfolder数据移动。 Please help me to complete it.请帮我完成它。

#!/usr/bin/perl
use warnings;
use File::Copy 'move';

my $srcdir = "d:\\projectx\\MUX4TO1_TB";
mkdir("D:\\projectx\\MUX4TO1_TB/Newfolder") || die "Unable to create directory <$!>\n";
my $dest = "D:\\projectx\\MUX4TO1_TB\\Newfolder";
opendir(DIR, $srcdir) or die "Can't open $srcdir: $!";
$filterstring = ".ps";

foreach my $filename (readdir(DIR)) {
    if ($filename =~ m/$filterstring/) {                          
        $cfile = $srcdir . $filename;
        print "\n moving $cfile from $srcdir to $dest \n";
        move($cfile, $dest) or die "The move operation failed: $!";                             
    }
}

closedir(DIR);

You did not provide a valid path of the final target您没有提供最终目标的有效路径

$cfile= $srcdir. '\\' . $filename;

You missed \\\\ backslashes while assigning a new value to $cfile .您在为$cfile分配新值时错过了\\\\反斜杠。

Full code:完整代码:

use warnings;
use File::Copy 'move';
my $srcdir= "d:\\projectx\\MUX4TO1_TB";
mkdir("D:\\projectx\\MUX4TO1_TB/Newfolder") || die "Unable to create    directory <$!>\n";
my $dest = "D:\\projectx\\MUX4TO1_TB\\Newfolder";
opendir(DIR, $srcdir) or die "Can't open $srcdir: $!";
$filterstring=".ps";
foreach my $filename (readdir(DIR))
{
    if ($filename =~ m/$filterstring/) {                          
        $cfile= $srcdir. '\\' . $filename; ## You missed '\\';
        print "\n moving $cfile from $srcdir  to $dest \n";
        move($cfile,$dest)or die "The move operation failed: $!";                             
    }
}
closedir(DIR);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM