本帖最后由 yanshengjiang 于 2025-10-20 22:20 编辑
https://www.theswamp.org/index.php?topic=58631.0

网友答: rar不是windows内置支持的压缩格式,必须用7z或者inwrar等软件解压。网友答: AI给了一段解压带密码的 居然成功了 不敢相信
网友答:
很好,反过来压缩文件可好?网友答:
诚然,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也不行网友答:
好的 谢谢!网友答: 跑过来瞅瞅
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等软件解压。
好的 谢谢!网友答: 跑过来瞅瞅