利用process.popen管道,不打开rar/zip压缩包直接删除压缩包内文件的代码
By
admin
at 2020-10-26 • 1人收藏 • 898人看过
如题:
利用了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();
登录后方可回帖