3 ###APPAUTHOR: xiaoranzzz
4 ###APPDATE: Wed Oct 17 07:51:57 2007
6 ###APPDESC: Packup a folder as a zip file,with pathname excluded.
7 ###APPUSAGE: [OPTIONS] (Directories...)
8 ###APPOPTION: -m [0-9]:Compress Level|-d:Delete directory after successful zipped|-e:Ext Name
9 ###APPEXAMPLE: zipfolder -d -m9 -e .zip music/ pictures/\n\tzipfolder music/ pictures
12 use File
::Glob qw
/bsd_glob/;
13 use lib
$ENV{XR_PERL_MODULE_DIR
};
14 use MyPlace
::Script
::Usage qw
/help_even_empty format_help/;
16 exit 0 if(help_even_empty
($0,@ARGV));
20 exit(format_help
$0) unless(getopts
($OptFlag,\
%OPT));
23 $lvl = 5 if((!defined $lvl) or $lvl<0 or $lvl>9);
24 my $do_unlink = $OPT{d
} ?
1 : 0;
25 my $ext = $OPT{e
} ?
$OPT{e
} : ".zip";
28 foreach(bsd_glob
($_)) {
33 print STDERR
("\"$_\" Ingored\n");
36 die("Nothing to do\n") unless(@dirs);
38 my $USER=$ENV{USER
} || "xiaoranzzz";
39 my $HOSTNAME=`hostname` || "myplace.hell";
40 my $MACHINE=`uname -omsr` || "windows";
42 my $COMMENT="Creator : $USER\n" .
44 "Machine : $MACHINE" .
47 my $ZIPPROGRAM="zip -Xrz";
58 use File
::Spec
::Functions
;
63 foreach my $idx(0 .. $#dirs) {
64 my $src = $dirs[$idx];
65 chdir($pwd) or die("$!\n");
67 $bn =~ s/[\/\\]$|^.*[\/\\]//g;
69 my $fn= File
::Spec
->rel2abs($src,$pwd) . $ext;
70 my $comment="Filename : $bn\n" . $COMMENT;
71 print("$src->$bn\n$comment");
72 if(!chdir($src)) {print STDERR
("$!\n");next;}
74 open ZIPP
,"|-","$ZIPPROGRAM -$lvl \"$fn\" ." or die("$!\n");
75 print ZIPP
($comment);
80 print("[",$idx+1,"/",$#dirs+1,"] \"$src\"->\"$bn\" [Done]\n");
83 print("Deleting \"$src\" ...");
84 if(dosys
("rm","-fdr","--",$src)==0) {
86 print("Deleting \"$src\" [OK]\n");
90 print("Deleting \"$src\" [Failed]\n");
96 print("\"$src\"->\"$bn\" [Failed]\n");