#!perl -l use warnings; use strict; use Win32::OLE qw/in/; die "Usage: $0 [dir]" unless (!@ARGV || -d $ARGV[0]); my $fs = Win32::OLE->CreateObject('Scripting.FileSystemObject'); my ($count, $maxname); my $max = 0; my $dir = shift || 'c:/temp'; my $fold = $fs->GetFolder($dir); print $fold->Size(), " total bytes used"; folders( $dir ); print "$count total files, $maxname = $max"; sub folders { my $dir = shift; my $fold = $fs->GetFolder( $dir ); foreach my $file ( in $fold->Files ) { my $size = $file->Size(); if ( $size > $max ) { $max = $size; $maxname = $file->Name; } $count++; } foreach my $subdir ( in $fold->SubFolders ) { folders( $subdir ); } }