use strict;
use IO::File;
use Digest::MD5 qw(md5);
my ($aLen, $i, $j, $tFile, $sFile);
my (@sDir,@tDir);
my ($cFile, $ex1, $ex2);
my ($cFile2, $chk1, $chk2);
my ($fs1, $fs2);
my($par1,$par2,$par3,$par4) = ($ARGV[0],$ARGV[1],$ARGV[2],$ARGV[3]) ; # Expects a slash at the end if directory
# par1 is the directory to Check
# par2 is directory to check against
# Exact dups are placed in ncn_cmp.bat to delete from first folder
# Differences in ncn_diff.txt as either missing or different
$par1 = $par1 || ".\\";
$ex1 = $par2 || ".err";
$ex2 = $par3 || ".fmx";
$par4 = $par4 || "NCN";
$chk1 = "Apple";
open (OUT, ">ncn_cmp.bat");
open (DF, ">ncn_diff.txt");
open (SM, ">ncn_same.txt");
$tFile="XXX";
if (-d $par1) {
opendir D1, $par1;
#@tDir=sort (readdir D1);
#@sDir=sort {-s $a <=> -s $b } @tDir;
@sDir=sort {-s $a <=> -s $b } (readdir D1);
$aLen = @sDir;
for ($j=0;$j<$aLen;$j++){
next if !(-f $par1 . "\\" .$sDir[$j]);
next if $sDir[$j] eq "ncn_cmp.bat";
next if $sDir[$j] eq "ncn_diff.txt";
next if $sDir[$j] eq "ncn_same.txt";
if ($par1 =~ s/\\$//g){
$sFile = $par1 . $sDir[$j];
} else {
$sFile = $par1 . "\\" . $sDir[$j];
}
#$sFile = $par1 . "\\" . $sDir[$j];
if ($tFile eq "XXX") {
$tFile = $sFile;
next;
}
$fs1 = -s $sFile;
$fs2 = -s $tFile;
if ($fs1 eq $fs2) {
open(TST, "<", $tFile);
$chk2 = md5();
close(TST);
open(TST, "<", $sFile);
$chk1 = md5();
close(TST);
} else {
# print $sFile . " size " . $fs1 . "\n";
# print $tFile . " size " . $fs2 . "\n";
$chk2 = "DIF";
}
if ($chk1 eq $chk2) {
print OUT "del \"" . $sFile . "\"\n";
print SM "echo N | comp " . $tFile . " " . $sFile . "\n";
} else {
if ($chk2 eq "NCN") {
print DF $tFile . " Not Found\n";
} else {
print DF $tFile . " and " . $sFile . " different\n";
}
}
$chk1 = "ABC";
$chk2 = "DEF";
$tFile = $sFile;
}
}
print OUT "del ncn_diff.txt\n";
print OUT "del ncn_same.txt\n";
print OUT "del ncn_cmp.bat\n";
close(OUT);
close(DF);
close(SM);