【工具】压缩包批量清除密码工具【使用内存盘提高读写】
By
the100s
at 2022-11-05 • 0人收藏 • 815人看过
本工具参考了http://chengxu.xyz/t/21394和aardio的几个范例,感谢aardio和作者
本工具使用了高速内存盘进行缓存读写压缩包,相对传统的方式,速度理论上应该更胜一筹。
代码和逻辑写得非常糟糕,the100s不是专业的,请不要喷。
import fonts.fontAwesome; import win.ui; /*DSG{{*/ var mainForm = win.form(text="压缩包批量清除密码工具";right=758;bottom=439) mainForm.add( btnExecute={cls="plus";text=" 开始";left=467;top=384;right=738;bottom=429;align="left";bgcolor=-5197169;db=1;dl=1;font=LOGFONT(h=-16);iconStyle={align="left";font=LOGFONT(h=-16;name='FontAwesome');padding={left=20}};iconText='\uF17A';notify=1;textPadding={left=42};z=2}; button={cls="button";text="OSFmount软件";left=618;top=266;right=726;bottom=301;z=14}; button2={cls="button";text="打开";left=676;top=48;right=724;bottom=78;z=15}; chkSubDir={cls="checkbox";text="递归处理子目录";left=287;top=391;right=403;bottom=407;db=1;disabled=1;dr=1;z=13}; driver={cls="edit";text="x:";left=615;top=48;right=664;bottom=78;edge=1;z=5}; editResult={cls="edit";text="本工具借用免费OSFmount软件产生内存盘以提高对压缩包的读写速度、 本工具引用了网络收集的winrar5版本,仅供于学习,请24小时内删除,否则产生任何问题请自负";left=15;top=13;right=598;bottom=314;db=1;dl=1;dr=1;dt=1;edge=1;hscroll=1;multiline=1;vscroll=1;z=1}; password={cls="edit";text="yyxitong.com";left=619;top=213;right=715;bottom=243;edge=1;z=8}; size={cls="edit";text="1024m";left=616;top=120;right=712;bottom=150;edge=1;z=6}; static={cls="static";text="内存盘";left=616;top=23;right=711;bottom=44;transparent=1;z=3}; static2={cls="static";text="内存盘大小";left=615;top=98;right=710;bottom=119;transparent=1;z=4}; static3={cls="static";text="被清密码";left=616;top=188;right=711;bottom=209;transparent=1;z=7}; static4={cls="static";text="后缀名:";left=17;top=389;right=71;bottom=408;align="right";dl=1;dt=1;transparent=1;z=11}; static5={cls="static";text="处理目录:";left=10;top=334;right=79;bottom=358;align="right";dl=1;dt=1;transparent=1;z=12}; txtDir={cls="edit";left=92;top=329;right=723;bottom=358;dl=1;dr=1;dt=1;edge=1;readonly=1;z=9}; txtExt={cls="edit";text="*.rar|*.zip";left=74;top=384;right=254;bottom=413;dl=1;dt=1;edge=1;multiline=1;z=10} ) /*}}*/ /*按钮皮肤{{*/ mainForm.btnExecute.skin({ background={ default=0xFF8FB2B0; hover=0xFF928BB3; disabled=0xFFCCCCCC; } }); /*}}*/ var driver=mainForm.driver.text //x: var size=mainForm.size.text //1024m var password=mainForm.password.text var batStr0 var updatebatstr=function(){ /*批处理指令字符串{{*/ var batStr = /*** @echo off set RD= ***/ batStr=batStr ++ driver var bats2=/*** if exist %RD%\ goto SKIP1 .\res\OSFMount.com -a -t vm -s ***/ //64M var bats3=/*** -m %RD% format %RD% /y /q /fs:ntfs /v:Ramdisk :SKIP1 ***/ bats2=bats2 ++ size ++bats3 batStr=batStr ++ bats2 return batStr; /*}}*/ } batStr0=updatebatstr() import process.batch; import fsys.dlg.dir; import fsys; import process; var 取文件名1=function(fn){ var exts=string.split(mainForm.txtExt.text,"|") var newfn=fn for(i=1;#exts;1){ exts[i] =string.replace(exts[i],"@*","") newfn=string.replace(newfn,exts[i],"") } return newfn } mainForm.btnExecute.oncommand = function(id,event){ var prcs = process.batch( batStr0 ); mainForm.btnExecute.disabledText = {'\uF254';'\uF251';'\uF252';'\uF253';'\uF250';text=''} var out,err = prcs.readAll(); //可在参数 @1 中指定匹配模式查找指定字符串 mainForm.editResult.print(out); var files={} var exfilefolders={} mainForm.txtDir.text = fsys.dlg.dir(,mainForm,'请选择要批量的目录') fsys.enum( mainForm.txtDir.text , string.split(mainForm.txtExt.text,"|"), function(dir,filename,fullpath,findData){ if(filename){ cmds=`res\winrar.exe x -y -ad -p`++ password ++` "`++ fullpath ++`" -w` ++driver ++" " ++driver mainForm.editResult.print(cmds); exfilefolder=取文件名1(filename) table.push(files,filename) table.push(exfilefolders,exfilefolder) var prcs,err = process(cmds); assert(prcs,err); prcs.wait() } },mainForm.chkSubDir.checked ); //wait for all extract finished -ibck for(i=1;#files;1){ cmds2=`res\winrar.exe a -df -ep1 -r -y -o -w`++driver++ ` "`++driver++"\" ++files[i]++`" "` ++driver++"\"++exfilefolders[i]++`\"` mainForm.editResult.print(cmds2 ); var prcs,err = process(cmds2); prcs.wait() assert(prcs,err); } mainForm.btnExecute.disabledText = null; } mainForm.button.oncommand = function(id,event){ process(`res\OSFMount.exe`) } mainForm.button2.oncommand = function(id,event){ if(io.exist(driver)){ process.explore(driver) } } mainForm.driver.oncommand = function(id,event){ driver=mainForm.driver.text batStr0=updatebatstr() } mainForm.size.oncommand = function(id,event){ size=mainForm.size.text batStr0=updatebatstr() //1024m } mainForm.password.oncommand = function(id,event){ password=mainForm.password.text batStr0=updatebatstr() } mainForm.show(); win.loopMessage();
除了下载源码,请自行下载OSFmount和winRAR到工程里的res目录存放。
或者可以下载成品程序体验:
https://www.123pan.com/s/mtEDVv-N33hH
1 个回复 | 最后更新于 2022-11-08
登录后方可回帖
感谢分享,简洁实用