The next fastest and easy this is to use dir command. Why? Since it uses Windows native command. I don’t know if find first find next function on Assembly or C is faster than this one.
On dir result we see the summary at the last line. All we need to do is place the result of dir command at a text file and parse the last line from the text file.
Here is a sample PERL script so you can understand what I meant.
sub getFreeDiskSpace ()
{
my $dirname = "$_[0]";
#Execution of the DIR command
system("dir $dirname /s > junk");
open FILE,"junk" || die ("Cannot open temporary file - \"junk\"");
#Parsing of the last lines of the DIR results
@_ = <FILE>;
close(FILE);
my $lastline = @_;
my $dir_size = @_[$lastline-2];
my $disk_remain = @_[$lastline-1];
my @fields = split(/ +/,$dir_size);
$_ = $fields[3];
s/,//g; #get rid of commas in the number
my $folder_size=$_;
my $file_count=$fields[1];
@fields = split(/ +/,$disk_remain);
$_ = $fields[3];
s/,//g; #get rid of commas in the number
my $free_space=$_;
my $folder_count=$fields[1];
unlink "junk";
return ($free_space,$folder_size,$file_count,$folder_count);
}
I go this concept from a script I found from the internet. I modified it and to a function for portability on the future use. What struck me the most is I am trying to look for a PERL function and this is what I’ve got. The lesson I got from this function is “Don’t reinvent the wheel, since it is already invented.” So use what’s available on the market.
0 comments:
Post a Comment