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")
|