Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: Recursive Directory Tree Deletion in Windows

by OzzyOsbourne (Chaplain)
on Oct 18, 2000 at 22:12 UTC ( [id://37379]=note: print w/replies, xml ) Need Help??


in reply to Recursive Directory Tree Deletion in Windows

You can pick out what you need...
# ********************************* # Call Modules # ********************************* use File::Find; use File::Copy; use Getopt::Std; getopts('d:h'); # ********************************* # Initialize variables # ********************************* $server='server104'; $dir1='\\\\'."$server".'\\d$'; $agedays=60; #defaults agedays to 60 # ********************************* # Process arguments ([h]elp,[d]ays) # ********************************* if ($opt_h){ die "\agecmd.pl -d[days to age]\n"; } if ($opt_d){ if ($opt_d gt 9){ #tests for strings die "Error: days option must be a number. Use agecmd.pl -d[da +ys to age]\n"; }else{ $agedays=$opt_d; } } # ********************************* # Do date calculations # ********************************* @xtime=localtime(time); $day=$xtime[3]+1; $month=$xtime[4]+1; $year=$xtime[5]+1900; $hours=$xtime[2]; $mins=$xtime[1]; $secs=$xtime[0]; $logname='//server1/d$/'."ftp$month$day$year$hours$mins$secs".'.log'; $agesecs=60*60*24*$agedays; #converts $agedays to seconds $daysago=time-$agesecs; #the time stamp of $agedays ago in seco +nds $daysago2=localtime($daysago); #the time stamp of $agedays ago in w +ords - mainly for printing # ********************************* # Find the files (no dir) on the server # ********************************* print "finding files to be aged\.\.\.\n"; find(\&wanted, $dir1); sub wanted { $filesecs = (stat("$File::Find::dir/$_"))[9]; #GETS THE 9TH ELEMEN +T OF file STAT - THE MODIFIED TIME $filesecs2=localtime($filesecs); if ($filesecs<$daysago && -f){ #-f=regular files, eliminates DIR p +.367 push (@files,"$File::Find::dir/$_"); push (@files,"$filesecs2"); } print'.'; } # ********************************* # replace '/' with '\' in file names # ********************************* foreach (@files){ s/\//\\/g; } # ********************************* # Write to Log # ********************************* %filehash=@files; #puts the array into a hash for easy printing. Key= +file, Value=date open OUT, ">$logname" or die "Cannot open $out for write :$!"; print OUT "FTP server aging log generated by PERL script\n"; print OUT "Script written by Ozzy on 4/18/00\n"; print OUT "Files deleted from \\\\$server on ".localtime(time)."\n"; print OUT "Files deleted before $daysago2\n"; print OUT "Files were aged $agedays days\n\n"; print OUT "File Listing:\n\n"; foreach $filename (sort keys %filehash){ print OUT "$filename $filehash{$filename}\n"; } close OUT; # ********************************* # Delete files # ********************************* print "\nDeleting all files before $daysago2"; #unlink %filehash; print "\nScript complete.";

-OzzyOsbourne

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://37379]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (4)
As of 2025-05-13 16:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.