2015-12-08 68 views
0

我一直在嘗試壓縮遠程windows服務器上的文件,但無論我嘗試過什麼都沒有獲得成功。以下是代碼的小小代表。請告訴我哪裏錯了。此代碼不會產生任何錯誤,但不會生成zip文件。在perl中壓縮文件

use strict; 
use warnings; 

# before running check perl module is installed in your PC. 

use Archive::Zip; 
use File::Basename 'basename'; 

my @files = ('D:\Scripts\Testing\abc.txt');  
    # if it is more than one file add it by using comma as separator 

my $zip = Archive::Zip->new; 

foreach my $file (@files) { 
    my $member = basename $file; 
    printf qq{Adding file "%s" as archive member "%s"\n}, $file, $member; 
    $zip->addFile($file, $member); 
    printf "Member added\n"; 
} 
printf "Writing to zip\n"; 
$zip->writeToFileNamed('zippedFolders.zip'); 
    #zip file name change it as u want 
+0

它可能會產生錯誤,但你不能[檢查他們(https://metacpan.org/pod/Archive::Zip#ERROR -CODES)。 –

+0

它不會產生任何錯誤,只是打印輸出「成員添加」和「寫入zip」。這是我所有的cmd – Sur

+0

如果你沒有做任何錯誤處理,你會如何知道是否有錯誤? –

回答

0

請你:

use Cwd; 
use strict; 
use warnings; 
# before running check perl module is installed in your PC. 
use Archive::Zip; 
use File::Basename; 

my (@files,$dirname,$bsename) = ""; 
my $inFile = "D:\\Scripts\\Testing\\abc.txt"; # if it is more than one file add it by using comma as separator 
my $curdir = getcwd(); 

#Need to open file here and to be read the file 
open(IN, $inFile) || die "Cant \n"; 
while(<IN>) { 
    my $sngfile = $_; 
    chomp($sngfile); 
    push(@files, $sngfile); 
} 
my $zip = Archive::Zip->new(); 
foreach my $file (@files) 
{ 
    $dirname = dirname($file); 
    $bsename = basename($file); 

    #Check file exist here your code 
    if($dirname!~m/\.$/) { 
    print "$dirname\t$bsename\n"; 
    #printf qq{Adding file "%s" as archive member "%s"\n}, $dirname, $bsename; 
    $zip->addFile("$dirname/$bsename"); } 
} 
printf "$curdir\\Writing to zip\n"; 
$zip->writeToFileNamed("$curdir/zippedFolders.zip"); #zip file name change it as u want 
+0

這看起來像一個編輯,而不是答案。 – Sobrique

+0

@Sobrique:已經由Matt Jacob給出答案。 – ssr1012

+1

@ ssr1012我沒有給出答案。我只是想解決實際問題。 –