这里有个高人写的,可是太复杂了,各位能简化点吗?
#NoTrayIcon ;;;你是好样的。
dim $log
$g_szVersion = "Diskclr V1.01-beta by luren" ;;;本段防止重复打开
If WinExists($g_szVersion) Then Exit
AutoItWinSetTitle($g_szVersion)
$begintime = TimerInit()
for $x = 1 to 99
$segment = "config" & $x
$excComputerName = iniread(@ScriptDir & "\diskclr.ini",$segment,"排除机器","")
if $excComputerName = "allcomputer" then
ContinueLoop
Else
$spexcComputerName = stringsplit($excComputerName,"|")
$skip = False
for $n = 1 to UBound($spexcComputerName) - 1
if @ComputerName = $spexcComputerName[$n] then
$skip = True
ExitLoop
EndIf
Next
if $skip then
ContinueLoop
EndIf
EndIf
$clrdir = IniRead(@ScriptDir & "\diskclr.ini",$segment,"清理目录","")
If stringlen($clrdir) <> 0 then
$excdir = IniRead(@ScriptDir & "\diskclr.ini",$segment ,"排除目录","")
$excfile = IniRead(@ScriptDir & "\diskclr.ini",$segment ,"排除文件","")
$clewdel = iniread(@ScriptDir & "\diskclr.ini",$segment ,"提示删除","")
Else
continueloop
EndIf
$spexcdir = stringsplit($excdir,"|")
$spexcfile = stringsplit($excfile,"|")
$spclewdel = stringsplit($clewdel,"|")
$search = FileFindFirstFile($clrdir & "\*.*")
If $search = -1 Then ExitLoop
while 1
$file = FileFindNextFile($search)
If @error Then
FileClose($search)
ExitLoop
ElseIf stringinstr(FileGetAttrib($clrdir & "\" & $file),"D") then
$del = False
for $m = 1 to UBound($spclewdel) - 1 ;;;询问是否删除目录
if $file = $spclewdel[$m] then
$msg = msgbox(262144 + 36 + 256 ,"请确认","是否移除目录" & $clrdir & "\" & $file,5)
if $msg = 6 then $del = True
EndIf
Next
if $del then
$dirremove = dirremove($clrdir & "\" & $file,1) ;;移除目录
if $dirremove = 0 then $log = $log & "目录:" & $clrdir & "\" & $file & @CRLF
EndIf
$del = True
for $m = 1 to UBound($spexcdir) - 1 ;;;排除目录
if $file = $spexcdir[$m] then
$del = False
EndIf
Next
if $del then
$dirremove = dirremove($clrdir & "\" & $file,1) ;;移除目录
if $dirremove = 0 then $log = $log & "目录:" & $clrdir & "\" & $file & @CRLF
EndIf
Else
$del = False
for $m = 1 to UBound($spclewdel) - 1 ;;;询问是否删除文件
if $file = $spclewdel[$m] then
$msg = msgbox(262144 + 36 + 256 ,"请确认","是否删除文件" & $clrdir & "\" & $file,5)
if $msg = 6 then $del = True
EndIf
Next
if $del then
if stringinstr(FileGetAttrib($clrdir & "\" & $file),"R") Then
FileSetAttrib($clrdir & "\" & $file,"-R")
$filedel = filedelete($clrdir & "\" & $file) ;;移除只读文件
FileSetAttrib($clrdir & "\" & $file,"+R")
Else
$filedel = filedelete($clrdir & "\" & $file) ;;移除文件
EndIf
if $filedel = 0 then $log = $log & "文件:" & $clrdir & "\" & $file & @CRLF
EndIf
$del = True
for $m = 1 to UBound($spexcfile) - 1 ;;排除文件
if $file = $spexcfile[$m] then
$del = False
EndIf
Next
if $del then
if stringinstr(FileGetAttrib($clrdir & "\" & $file),"R") Then
FileSetAttrib($clrdir & "\" & $file,"-R")
$filedel = filedelete($clrdir & "\" & $file) ;;移除只读文件
FileSetAttrib($clrdir & "\" & $file,"+R")
Else
$filedel = filedelete($clrdir & "\" & $file) ;;移除文件
EndIf
if $filedel = 0 then $log = $log & "文件:" & $clrdir & "\" & $file & @CRLF
EndIf
EndIf
WEnd
Next
if iniread(@ScriptDir & "\diskclr.ini","config1","显示日志","") = 1 Then
if stringlen($log) <> 0 Then
msgbox(4096,"日志","下列文件删除失败,请确定此文件存在且对文件具有删除权限." & @CRLF & $log & @crlf & "共耗时" & TimerDiff($begintime)/1000 & "秒")
Else
MsgBox(4096,"日志","清理磁盘成功!" & @crlf & "共耗时" & TimerDiff($begintime)/1000 & "秒")
EndIf
EndIf
配置格式文件如下:diskclr.ini
配置文件举例:
[config1]
清理目录=d:\netgame
排除目录=华夏online|QQR2|QQ幻想|QQ堂|傲世|霸王大陆|传奇世界|大话西游|街头篮球|劲乐团
排除文件=config.ini|profile.exe|diskclr.ini
提示删除=华夏online|diskclr.ini
排除机器=allcomputer
显示日志=1
[config2]
清理目录=
排除目录=
排除文件=
提示删除=
排除机器=allcomputer
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
注意:
1、你现在使用的是测试版本,对任何因使用本软件引起的一切后果与造成的任何法律责任,本人概不负责!
2、本软件为免费软件,您可以自由使用与传播它。但是请注意一定要保持它的原貌,不要对它进行任何修改。
3、本人保证不在软件中加入恶意或破坏的代码,但本人不保证软件完全可用性。因误操作失误或软件的BUG
造成的问题,无任何担保.如果遇到问题可以和我联系,我会尽力帮助你解决.
4、本软件为AU3编写,某些杀毒软件可能设报为病病.
5、本软件编译时未加密,懂AU3的朋友可以自已反编译出源代码.
6、本软件具有一定的危险性,请仔细阅读本README文档,确认无误后方能运行主程序。
使用帮助:
1、[config]段最多可自定义99组,从[config1]到[config99],[config]段必须连续,
如果有[config3],而没有[config2],则程序执行完[config1]后自动退出,
不会再去执行[config3]中的内容,此时可在配置文件中加入一个空的[config2]段,
下面不加"清理目录="或把"清理目录="留空不填即可.
2、"清理目录="一栏填入要清理的目录名,后面不用加"\"
3、"排除目录="一栏填入要排除的目录名,中间用"|"符号分开(不含引号)
4、"排除文件="一栏填入要排除的文件名,中间用"|"符号分开(不含引号)
ps:用"|",现不用","或";"是因为文件名中不能出现"|"字符,防止出错.
5、"提示删除="中定义的文件或目录必须添加到“排除文件”或“排除目录”中,否则
不管提示时回答"是"或"否",程序都会删除此目录或文件.
出现提示后五秒内用户不选择,则默认不删除此文件或目录。
6、"排除机器="一行请填入要排除的机器的计算机名,中间用"|"符号分开(不含引号),
不可填IP,如果留空默认为所有机器.如果为"allcomputer"则排除所有机器.
PS:上次下载一个人写的一个类似软件,他的配置文件里面直接写的e:\,而排除文件没写,
我下载下来,看也没看就运行了他的主程序,结果我E盘里几十G的东西没了,郁闷死我了,
所以才想到加上"allcomputer"
7、"显示日志="为1时显示,为其它值时不显示,只需要在[config1]段中加入此行. |