转载:直接解压ZIP文件
本帖最后由 yanshengjiang 于 2025-10-20 22:20 编辑https://www.theswamp.org/index.php?topic=58631.0
(Defun EXTRACTZIP (ZIP DIR DEL / FSO SRC TAR)
(and (null DIR)
(setq DIR (vl-filename-mktemp))
(vl-mkdir DIR)
)
(and (findfile ZIP)
(vl-file-directory-p DIR)
(setq FSO (vlax-create-object "Shell.Application")
TAR (vlax-invoke-method FSO "NameSpace" DIR)
)
(setq SRC (vlax-invoke-method FSO "NameSpace" ZIP)
SRC (vlax-invoke SRC "Items")
)
(vlax-invoke-method TAR "CopyHere" SRC 20)
)
(and DEL (vl-file-delete ZIP))
(and FSO (vlax-release-object FSO))
)
rar不是windows内置支持的压缩格式,必须用7z或者inwrar等软件解压。 AI给了一段解压带密码的居然成功了不敢相信
(Defun EXTRACTZIP (ZIP DIR DEL PASSWD / cmd ret)
;; 处理和准备目录(这部分逻辑与原代码相同)
(and (null DIR)
(setq DIR (vl-filename-mktemp))
(vl-mkdir DIR)
)
;; 核心:构建并执行命令行
(if (and (findfile ZIP) (vl-file-directory-p DIR))
(progn
;; 构建7z命令字符串
(setq cmd (strcat "7z x \""
(findfile ZIP); 确保使用完整路径
"\" -p" PASSWD; -p 参数指定密码
" -o\"" DIR "\" -y"; -o 指定输出目录,-y 表示全部同意
)
)
;; 执行命令。返回值ret为0通常表示成功
(setq ret (vlax-invoke-method (vlax-create-object "WScript.Shell") "Run" cmd 0 :vlax-true))
(if (= ret 0)
(princ (strcat "\n解压成功!文件位于: " DIR))
(princ "\n解压失败!请检查密码是否正确,或ZIP文件是否损坏。")
)
;; 根据DEL参数决定是否删除原ZIP文件
(and DEL (vl-file-delete ZIP))
)
(princ "\n错误:未找到ZIP文件或目标目录无效。")
)
(princ) ; 静默退出
)
使用此方法前的准备工作:
安装7-Zip:确保您的计算机上安装了7-Zip。
确认命令可用:在Windows的命令提示符(CMD)中直接输入7z,如果能看到帮助信息,说明可以直接调用。如果不行,可能需要提供7z.exe的完整路径(例如"C:\\Program Files\\7-Zip\\7z.exe")来替换上面命令中的7z。
改进后,您可以这样调用函数(假设密码为mypassword):
autolisp
复制
(EXTRACTZIP "C:\\example.zip" "D:\\output" nil "mypassword") 很好,反过来压缩文件可好? Bao_lai 发表于 2025-10-20 22:39
很好,反过来压缩文件可好?
诚然,deepseek一遍过
(defun ZIPFOLDER-7Z (sourceFolder targetZip / cmd ret)
;; 构建7z命令字符串。注意:请根据您电脑上7z的实际路径调整
(setq cmd (strcat
"7z a -tzip \"" ; a: 添加文件到压缩包 -tzip: 指定为zip格式
targetZip
"\" \""
sourceFolder
"\\*\" -r" ; 压缩源文件夹下的所有内容(-r表示递归子目录)
)
)
;; 执行命令
(setq ret (vlax-invoke-method (vlax-create-object "WScript.Shell") "Run" cmd 0 :vlax-true))
(if (= ret 0)
(princ (strcat "\n使用7z压缩成功!文件位于: " targetZip))
(princ "\n压缩失败,请检查7z是否安装或命令是否正确。")
)
(princ)
)
(ZIPFOLDER-7Z "C:\\标准DLTB转CASS模板_FME工具(yan修改)2024-07-15" "D:\\MyProject.zip") 有没有,未安装7z的试试
使用此方法前,请确保您的计算机上已安装了 7-Zip软件,并且其命令行工具 7z.exe的路径已添加到系统的环境变量PATH中。如果没有,需要在命令中指定完整路径,例如:
"C:\\Program Files\\7-Zip\\7z.exe" a ...。 rar文件好像不能解压呢即使后缀改为zip也不行 kozmosovia 发表于 2025-10-21 16:45
rar不是windows内置支持的压缩格式,必须用7z或者inwrar等软件解压。
好的谢谢! 跑过来瞅瞅 guosheyang 发表于 2025-10-21 16:54
好的谢谢!
win11从某个版本可以解压7z、rar等格式了,不清楚从哪个版本开始的
页:
[1]