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

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

如题:

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


登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...