利用process.popen管道,不打开rar/zip压缩包直接删除压缩包内文件的代码

By admin at 2020-10-26 • 1人收藏 • 155人看过

如题:

利用了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();


登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前在学aardio+halcon机器视觉.
Htmlayout界面在线学习文档
Sciter中文在线文档Sciter在线学习文档
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
aardio在线手册Aardio在线手册
C大Aardio论坛:Aar爱好者论坛
简码教程网:简码编程
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...