;delete dirs except one
;
Function un.RmDirsButSome
;
exclude dir
Exch $R0
Exch 1
Exch
$R1
Exch 2
Exch $R2
Exch 3
Exch
$R3
Exch 4
Exch $R4
; route dir
Exch 5
Exch $R5
Push $R6
Push
$R7
ClearErrors
FindFirst $R7 $R6 "$R5/*.*"
IfErrors Exit
Top:
StrCmp $R6 "." Next
StrCmp $R6 ".." Next
StrCmp $R6 $R0 Next
StrCmp $R6 $R1
Next
StrCmp $R6 $R2 Next
StrCmp $R6 $R3 Next
StrCmp $R6 $R4 Next
;delete file or rm dir
IfFileExists "$R5/$R6/*.*" IsDir IsFile
IsDir:
RmDir /r
"$R5/$R6"
IsFile:
IfFileExists "$R5/$R6" 0 Next
delete "$R5/$R6"
#Goto Exit ;uncomment this to stop it being recursive
(delete only one dir)
Next:
ClearErrors
FindNext $R7 $R6
IfErrors Exit
Goto Top
Exit:
FindClose $R7
Pop $R7
Pop
$R6
Pop $R5
Pop $R4
Pop $R3
Pop
$R2
Pop $R1
Pop
$R0
FunctionEnd
;
;删除除指定文件夹以外的文件宏
;
!macro RmDirsButSome path path1 path2 path3 path4 path5
push ${path}
push ${path1}
push ${path2}
push
${path3}
push ${path4}
push ${path5}
call
un.RmDirsButSome
!macroend
"other"
un.开关;