File::Copy::move不好使
system("move ....") 在Windows下也不好使
哪个给个办法,越简单越好。
11 个解决方案
#1
你试一下rename
#2
支持楼上的,你试一下,不过rename好像不能在不同磁盘间移动
#3
汗,这个还真挺郁闷……
要不在windows上装个mv吧?
要不在windows上装个mv吧?
#4
帮顶,
顺便借宝地一用,放分100,各位前辈去帮我看看哈。
http://topic.csdn.net/u/20080829/15/cf342255-bc48-450b-888c-e50f549feb69.html?seed=1460322691
欢迎去抢哈。
顺便借宝地一用,放分100,各位前辈去帮我看看哈。
http://topic.csdn.net/u/20080829/15/cf342255-bc48-450b-888c-e50f549feb69.html?seed=1460322691
欢迎去抢哈。
#5
Windows下使用 xcopy
如,拷贝source目录下的所有子目录及文件到destination目录下:
如,拷贝source目录下的所有子目录及文件到destination目录下:
#! perl
my $source_dir = 'F:\Perl\source\*';
my $destination_dir = 'F:\Perl\destination';
system("xcopy /E $current_dir $destination_dir");
#6
给你个万能的,就是麻烦点,经过我的测试了
#!/usr/bin/perl -w
use strict;
my $sourcedir = 'D:\test1';#$sourcedir你要移动的目录
my $new_dir = 'D:\test2';#$new_dir是目标文件夹
my $filelist = "D:\\filelist.log";#$filelist保存你要移动的所有文件列表
my $currentdir = "D:\\"; #$currentdir你的脚本所在的目录
chdir($sourcedir);
system ("dir /b /s /a:-D >$filelist");
chdir ($currentdir);
open THELIST,$filelist;
while(<THELIST>){
chomp;
my $thelist = $_;
my $src_file =$thelist;
print "start\n";
if ($src_file =~ /(.*)\\(.+)\..*/g) {
my $src_path = $1;
print "src1:$src_path\n";
print "$sourcedir and $new_dir \n";
$src_path =~ s/D:\\test1/$new_dir/;#D:\\test1即$sourcedir你要移动的目录,但此处不能用变量$sourcedir
print "src2:$src_path\n";
if(! -e $src_path){
print "make\n";
system("mkdir $src_path");
}
system("move $thelist $src_path");
print "move\n";
}
}
close(THELIST);
#!/usr/bin/perl -w
use strict;
my $sourcedir = 'D:\test1';#$sourcedir你要移动的目录
my $new_dir = 'D:\test2';#$new_dir是目标文件夹
my $filelist = "D:\\filelist.log";#$filelist保存你要移动的所有文件列表
my $currentdir = "D:\\"; #$currentdir你的脚本所在的目录
chdir($sourcedir);
system ("dir /b /s /a:-D >$filelist");
chdir ($currentdir);
open THELIST,$filelist;
while(<THELIST>){
chomp;
my $thelist = $_;
my $src_file =$thelist;
print "start\n";
if ($src_file =~ /(.*)\\(.+)\..*/g) {
my $src_path = $1;
print "src1:$src_path\n";
print "$sourcedir and $new_dir \n";
$src_path =~ s/D:\\test1/$new_dir/;#D:\\test1即$sourcedir你要移动的目录,但此处不能用变量$sourcedir
print "src2:$src_path\n";
if(! -e $src_path){
print "make\n";
system("mkdir $src_path");
}
system("move $thelist $src_path");
print "move\n";
}
}
close(THELIST);
#7
这个只能copy,不能move,达不到楼主的要求啊
#8
恩
那就再加上个del /q $source_dir
#9
复制再删除来实现move,效率太低了。
#10
robocopy 有一个选项copy完成之后可以删除源地址的文件
#11
感谢大家,这个帖发了之后就忘掉了。现在才来结分,真对不起!
#1
你试一下rename
#2
支持楼上的,你试一下,不过rename好像不能在不同磁盘间移动
#3
汗,这个还真挺郁闷……
要不在windows上装个mv吧?
要不在windows上装个mv吧?
#4
帮顶,
顺便借宝地一用,放分100,各位前辈去帮我看看哈。
http://topic.csdn.net/u/20080829/15/cf342255-bc48-450b-888c-e50f549feb69.html?seed=1460322691
欢迎去抢哈。
顺便借宝地一用,放分100,各位前辈去帮我看看哈。
http://topic.csdn.net/u/20080829/15/cf342255-bc48-450b-888c-e50f549feb69.html?seed=1460322691
欢迎去抢哈。
#5
Windows下使用 xcopy
如,拷贝source目录下的所有子目录及文件到destination目录下:
如,拷贝source目录下的所有子目录及文件到destination目录下:
#! perl
my $source_dir = 'F:\Perl\source\*';
my $destination_dir = 'F:\Perl\destination';
system("xcopy /E $current_dir $destination_dir");
#6
给你个万能的,就是麻烦点,经过我的测试了
#!/usr/bin/perl -w
use strict;
my $sourcedir = 'D:\test1';#$sourcedir你要移动的目录
my $new_dir = 'D:\test2';#$new_dir是目标文件夹
my $filelist = "D:\\filelist.log";#$filelist保存你要移动的所有文件列表
my $currentdir = "D:\\"; #$currentdir你的脚本所在的目录
chdir($sourcedir);
system ("dir /b /s /a:-D >$filelist");
chdir ($currentdir);
open THELIST,$filelist;
while(<THELIST>){
chomp;
my $thelist = $_;
my $src_file =$thelist;
print "start\n";
if ($src_file =~ /(.*)\\(.+)\..*/g) {
my $src_path = $1;
print "src1:$src_path\n";
print "$sourcedir and $new_dir \n";
$src_path =~ s/D:\\test1/$new_dir/;#D:\\test1即$sourcedir你要移动的目录,但此处不能用变量$sourcedir
print "src2:$src_path\n";
if(! -e $src_path){
print "make\n";
system("mkdir $src_path");
}
system("move $thelist $src_path");
print "move\n";
}
}
close(THELIST);
#!/usr/bin/perl -w
use strict;
my $sourcedir = 'D:\test1';#$sourcedir你要移动的目录
my $new_dir = 'D:\test2';#$new_dir是目标文件夹
my $filelist = "D:\\filelist.log";#$filelist保存你要移动的所有文件列表
my $currentdir = "D:\\"; #$currentdir你的脚本所在的目录
chdir($sourcedir);
system ("dir /b /s /a:-D >$filelist");
chdir ($currentdir);
open THELIST,$filelist;
while(<THELIST>){
chomp;
my $thelist = $_;
my $src_file =$thelist;
print "start\n";
if ($src_file =~ /(.*)\\(.+)\..*/g) {
my $src_path = $1;
print "src1:$src_path\n";
print "$sourcedir and $new_dir \n";
$src_path =~ s/D:\\test1/$new_dir/;#D:\\test1即$sourcedir你要移动的目录,但此处不能用变量$sourcedir
print "src2:$src_path\n";
if(! -e $src_path){
print "make\n";
system("mkdir $src_path");
}
system("move $thelist $src_path");
print "move\n";
}
}
close(THELIST);
#7
这个只能copy,不能move,达不到楼主的要求啊
#8
恩
那就再加上个del /q $source_dir
#9
复制再删除来实现move,效率太低了。
#10
robocopy 有一个选项copy完成之后可以删除源地址的文件
#11
感谢大家,这个帖发了之后就忘掉了。现在才来结分,真对不起!