【工具】压缩包批量清除密码工具【使用内存盘提高读写】
By
the100s
at 2022-11-05 • 0人收藏 • 939人看过
本工具参考了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
登录后方可回帖
感谢分享,简洁实用