#Persistent Menu,Tray,Add, 初始程序 Menu,Tray,Add, 退出程序 Menu,Tray,NoStandard winkz = exe,ahk,zip,rar,7z,pdf,rm,avi,xls,doc,txt,bmp,jpg,gif,ico,wav,mp3,avi,bak ;新文件允许的文件类型 winys = zip,7z,rar ;需要解压的文件类型 Loop, %A_ScriptDir%*.* ;初始化列表 { winlb = %A_LoopFileFullPath%`n%winlb% } Loop { Sleep,7zip1000 Menu, MyMenu, Add,11, MenuHandler Menu,MyMenu,Delete Loop, %A_ScriptDir%*.* ;检测文件 { SplitPath, A_LoopFileFullPath, OutFileName,,OutExtension,OutNameNoExt IfNotInString, winkz, %OutExtension% continue IfInString, winlb, %A_LoopFileFullPath% continue winlb = %A_LoopFileFullPath%`n%winlb% TrayTip ,出现新文件,正在处理`n%OutFileName%,,1 IfInString, winys, %OutExtension% { Name = %A_ScriptDir%%OutNameNoExt% SmartZip(A_LoopFileFullPath,Name) Loop, %Name%*.* { SplitPath, A_LoopFileFullPath, OutFileName Menu, %OutNameNoExt%, Add, %OutFileName%, MenuHandler } Menu, %OutNameNoExt%, Add, 打开文件夹, MenuHandler Menu, MyMenu, Add, %OutNameNoExt%, :%OutNameNoExt% } else { Menu, MyMenu, Add, %OutFileName%, MenuHandler } Menu, MyMenu, Color, FFFF00,Single Menu, MyMenu, Show } } return 初始程序: Reload return 退出程序: ExitApp return MenuHandler: if A_ThisMenu = MyMenu { Run,%A_ScriptDir%%A_ThisMenuItem% } else { if A_ThisMenuItem = 打开文件夹 { Run,%A_ScriptDir%%A_ThisMenu% } else { Run,%A_ScriptDir%%A_ThisMenu%%A_ThisMenuItem% } } return SmartZip(s, o, t = 4) { IfNotExist, %s% return, -1 oShell := ComObjCreate("Shell.Application") if InStr(FileExist(o), "D") or (!FileExist(o) and (SubStr(s, -3) = ".zip")) { if !o o := A_ScriptDir else ifNotExist, %o% FileCreateDir, %o% Loop, %o%, 1 sObjectLongName := A_LoopFileLongPath oObject := oShell.NameSpace(sObjectLongName) Loop, %s%, 1 { oSource := oShell.NameSpace(A_LoopFileLongPath) oObject.CopyHere(oSource.Items, t) } } }