Windows Log file compression in perl

This script will search the location for all .log files and compress them using NTFS.

#!perl
#Search osbLocations for *.log files and ntfs compress them.

use File::Find;
use Win32::OLE;

@osbLocations = (
  'E:/obs-win-mthosting2',
  'E:/obsr-win-mthosting3',
  );

$strComputer = '.';
$objWMI = Win32::OLE->GetObject('winmgmts:\\\\' . $strComputer . '\\root\\cimv2');


foreach (@osbLocations) 
{
 find(\&processFile, $_);
} 


sub processFile()
{
 if ( -f and /.log$/ )
 {
  $objFile = $objWMI->Get('Cim_Datafile=\'' . $File::Find::name . '\'');
  if ($objFile->Compressed != 1)
  {
   print $objFile->Name, "\n";
   $intRC = $objFile->Compress;
   # To uncompress change this to objFile.Uncompress
   if ($intRC != 0) {
       print 'There was an error compressing the file: ' . $intRC, "\n";
   }
   else {
       print "File compression successful\n";
   }
  }
 }
}

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.