利用process.popen管道,不打开rar/zip压缩包直接删除压缩包内文件的代码
By
admin
at 2020-10-26 • 1人收藏 • 969人看过
如题:
利用了rar的命令行 , 通过管道无感操作 , 参考了sevenZip.cmd库内写法
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469)
winform.add(
button={cls="button";text="删除";left=141;top=311;right=404;bottom=372;z=1};
edit={cls="edit";text="demo.txt";left=143;top=226;right=407;bottom=261;edge=1;multiline=1;z=2}
)
/*}}*/
import process.popen;
import fsys;
import console
console.open()
namespace sZip{
var zPath = ..fsys.appdata("aardio/std/7za.9.20.dll",$"~/lib/sevenZip/cmd/.bin/7za.dll");
deleteDir = function(src,dst,proc,password, ...){
if( ! ..io.exist(src) ) error("压缩包路径错误",2)
var prcs = ..process.popen(zPath,
'"' + zPath + '" ' //7z的第一个命令参数应当是自身路径
+ ' d "' + ..io.fullpath(src) + '" ' //d命令表示删掉
+ '"' + ..io.fullpath(dst) + '" ' //需要删掉的文件
+ ( password? "-p"+password : "" )//有木有密码都可以删除
++ ..string.concat(" ", ...)
)
for( all,out,err in prcs.each() ){
if(proc) proc( out,err );
}
prcs.close();
}
}
var procfun = function(out,err){
console.log(out,err)
}
winform.button.oncommand = function(id,event){
sZip.deleteDir("C:\新建文件夹\ccc\ccc.zip","2.txt",procfun);
}
winform.show();
win.loopMessage();登录后方可回帖