Code archives/File Utilities/Hard Drive Cleaner
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
| Short and easily modifiable program that allows you to scan and delete empty directories, temporary internet files, all .TMP and .BAK files, cache files, contents of all TEMP and TMP directories, and if you like, you can add the code to delete cookies as well. Some files and directories may be protected, so these will not delete, and on rerunning this program more than once, some parent directories may be flagged for possible deletion if all their subdirectories were deleted on a previous run. | |||||
Global swidth=800, sheight=600, v$
Graphics swidth,sheight,16
ClsColor 0,0,128
Cls
AppTitle "HD Cleaner"
Print" Hard Drive Cleaner, by Donald R. Dardem, November 2002"
Print""
Print" WARNING! Use this program with Caution! If used or modified"
Print" incautiously, it may delete some essential file or directory"
Print" that is required for proper operation of your system."
Print""
Print" No warrantee as to suitability or operation is given or implied,"
Print" so use at your own risk. Note that some programs may use a zero-"
Print" length file as a flag of some sort, or there may be an empty"
Print" directory that is needed at certain other times for the proper"
Print" operation of some program. That is the type of issue that would"
Print" become a problem if the needed file or directory is deleted."
Print" While this approach is rarely today, some programs have behaved"
Print" in this fashion in the past, and others may again in the future."
Print""
Print" Note that when a question is asked, you must enter an answer that"
Print" includes the letter 'Y' (such as 'y', 'Y', 'yes' or 'okay') if"
Print" you want to signify 'yes', otherwize the question defaults to"
Print" 'No' when the Enter key is pressed."
Print""
Print""
d$=Input$("Automatically delete zero-byte (empty) files? ")
killnull=Instr(Upper$(d$),"Y")
d$=Input$("Automatically delete .TMP files? ")
killtmp=Instr(Upper$(d$),"Y")
d$=Input$("Automatically delete .BAK files? ")
killbak=Instr(Upper$(d$),"Y")
d$=Input$("Automatically delete Temporary Internet Files? ")
killTIF=Instr(Upper$(d$),"Y")
For a%=Asc("C") To Asc("Z")
d$=Chr$(a%)+":\"+Chr$(0)
chkdrive=1
While d$>""
If c$>"" And chkdir=0 Then
Color 128,255,0
If Right$(c$,2)<>":\" Then
Print c$
e$=Upper$(c$)
b%=Instr(e$,"\CACHE\")
If b%>0 And b%+6<Len(e$) And killTIF Then Goto erasedir
b%=Instr(e$,"\TEMP\")
If b%>0 And b%+5<Len(e$)And killtmp Then Goto erasedir
b%=Instr(e$,"\TMP\")
If b%>0 And b%+4<Len(e$)And killtmp Then Goto erasedir
b%=Instr(e$,"\TEMPORARY INTERNET FILES\")
If b% And b%+25<Len(e$) Then
.erasedir
DeleteDir c$
Else
.askerase
e$=Input$("The above directory is empty, delete it? ")
If Instr(Upper$(e$),"Y") Then DeleteDir c$
EndIf
EndIf
EndIf
b%=Instr(d$,Chr$(0))
If b%=0 Then b%=Len(d$)+1
c$=Left$(d$,b%-1)
chkdir=0
d$=Mid$(d$,b%+1)
If Right$(c$,1)<>"\" Then c$=c$+"\"
b%=ReadDir(c$)
While b%>0
f$=NextFile$(b%)
If f$="" Then Exit
If Left$(f$,1)<>"." Then
e$=c$+f$
chkdir=chkdir+1
If chkdrive Then
chkdrive=0
numdrives=numdrives+1
EndIf
If FileType(e$)=2 Then
d$=d$+e$+Chr$(0)
numdirs=numdirs+1
Else
Color 255,255,192
nb=FileSize(e$)
ue$=Upper$(e$)
If nb=0 Then
Color 255,128,0
nilfiles=nilfiles+1
If killnull Then DeleteFile e$
ElseIf Instr(ue$,"\TEMPORARY INTERNET FILES\") Or Instr(ue$,"\CACHE\")Then
Color 128,128,128
If killTIF Then DeleteFile e$
ElseIf Instr(ue$,"\TMP\") Or Instr(ue$,"\TEMP\")Then
Goto killtmps
Else
Select Upper$(Right$(e$,4))
Case ".TMP" ;tabulate temporary files
.killtmps
Color 192,192,255
If killtmp Then
DeleteFile e$
Else
tmpfiles=tmpfiles+1
tmpbyteslo=tmpbyteslo+nb
While tmpbyteslo>100000000
tmpbyteshi=tmpbyteshi+1
tmpbyteslo=tmpbyteslo-100000000
Wend
EndIf
Case ".BAK" ;tabulate backup files
Color 160,255,160
If killbak Then
DeleteFile e$
Else
bakfiles=bakfiles+1
bakbyteslo=bakbyteslo+nb
While bakbyteslo>100000000
bakbyteshi=bakbyteshi+1
bakbyteslo=bakbyteslo-100000000
Wend
EndIf
Case ",BB" ;tabulate BlitzBASIC source files
bbfiles=bbfiles+1
Default
End Select
End If
strnumb(0,nb)
g$=e$+String$(" ",swidth/8-Len(e$)-Len(v)-6)+v+" bytes"
Print g$
numfiles=numfiles+1
byteslo=byteslo+nb
While byteslo>100000000
byteslo=byteslo-100000000
byteshi=byteshi+1
Wend
EndIf
EndIf
Wend
Wend
Next
Print "Number of scanned drives: "+numdrives
Print "Number of scanned directories: "+numdirs
Print "Number of scanned files: "+numfiles
strnumb(byteshi,byteslo)
Print "Total bytes in files: "+v
Print "Number of zero-byte files: "+nilfiles
strnumb(tmpbyteshi,tmpbyteslo)
Print "Number of .TMP files: "+tmpfiles+", Number of bytes: "+v
strnumb(bakbyteshi,bakbyteslo)
Print "Number of .BAK files: "+bakfiles+", Number of bytes: "+v
Function strnumb(hi,lo)
Local z$,w,zz$,x
w=hi
x=lo
While x>100000000
w=w+1
x=x-100000000
Wend
zz=w
z=x
z=zz+String$("0",8-Len(z))+z
w=Instr(z,".")
If w=0 Then
w=Len(z)+1
Else
x=Instr(z,"e")
If x Then
zz=Left$(z,x-1)
x=Mid$(z,x+1,Len(z)-x)
z=Left$(z,1)+Mid$(zz,3,Len(zz)-2)
z=z+String$("0",x-Len(z)+1)
w=Len(z)+1
Print "w = "+w
Else
While Right$(z,1)="0"Or Right$(z,1)="."
z=Left$(z,Len(z)-1)
Wend
EndIf
EndIf
While w>3
w=w-3
z=Left$(z,w-1)+","+Mid$(z,w,Len(z)-w+1)
Wend
While Left$(z,1)="0" Or Left$(z,1)=","
z=Mid$(z,2,Len(z)-1)
Wend
If z="" Then z="0"
v=z
End Function |
Comments
None.
Code Archives Forum