sandyvs 发表于 2025-5-23 10:10:45

利用powershell解压文件

本帖最后由 sandyvs 于 2025-5-23 11:14 编辑

如果是win10,win11就简单了


;[功能] 工具-解压zip文件(系统自带),(czx:uzipz fss path)
;[用法](czx:uzipz (getfiled "请选择压缩文件" "" "zip" 0) nil)
;[说明]fss = 要解压的文件完整路径//path = 解压路径,nil时与解压文件同目录//说明:只支持zip
(defun czx:uzipz (ffs path / cmd)
(if (null path) (setq path (vl-filename-directory ffs)))
(setq cmd (strcat
            "Expand-Archive -Path "
            "\'" ffs "\'"
            " -DestinationPath "
            "\'" path "\'"
            " -force";覆盖
            )
)
(czx:runps cmd nil)
)


(defun czx:RunPS (command flag / run)
(setq shell (vlax-create-object "Shell.Application"))
(if flag (setq run "runas") (setq run ""))
(vlax-invoke-method
    shell
    'ShellExecute
    "powershell.exe"                  ; 程序路径
    (strcat "-Command \"" command "\"") ; 参数(需转义内部引号)
    ""                              ; 工作目录(空表示默认)
    run                           ; 动词,请求管理员权限
    0                                 ; 窗口模式(0= 隐藏 1=正常窗口)
)
(vlax-release-object shell)
)


大佬的帖子,http://bbs.mjtd.com/forum.php?mo ... hlight=%BD%E2%D1%B9
用dwx解压文件,需要系统注册dynwrapx.dll和UnRAR64.dll。还提到了7z可以,试着弄了下,命令行工具7za,支持zip,7z等格式

;[功能] 工具-解压文件,(czx:uzip fss path)
;[用法](czx:uzip (getfiled "请选择压缩文件" "" "zip" 0) nil)
;[说明]fss = 要解压的文件完整路径//path = 解压路径,nil时与解压文件同目录//说明:支持zip,7z等格式
(defun czx:uzip (ffs path / 7zapath cmd)
      (setq 7zaPath (findfile "7ZA.exe")))
      (if7zaPath
                (progn
                        (if (null path) (setq path (vl-filename-directory ffs)))
                        
                        (setq cmd (strcat
                                                                  "& \"" 7zaPath "\""
                                                                        " x "
                                                                        "\'" ffs "\'"
                                                                        " -o"
                                                                        "\'" path "\'"
                                                                        " -y";覆盖
                                                                        )
                        )
                        (czx:runps cmd nil)
                )
                (princ " \n 请将 7ZA.exe 放到CAD搜索路径!")
      )
)

WinRAR.exe也是可以的,powershell里面 "E:\桌面\WinRAR.exe" x "e:\桌面\2.zip" "e:\桌面"

至于用途,我是把插件用的的支持文件打一个压缩包,然后生成vlx,http://bbs.mjtd.com/forum.php?mo ... hlight=%B4%F2%B0%FC
需要的时候释放出来,再解压,把解压目录添加到搜索路径就行了






lxl217114 发表于 2025-5-23 11:03:58

越玩越高级了,cad还可以做啥?

kozmosovia 发表于 2025-5-23 12:28:23

ZIP不需要上powershell,FSO就能搞定了。

sandyvs 发表于 2025-10-21 11:44:45

kozmosovia 发表于 2025-5-23 12:28
ZIP不需要上powershell,FSO就能搞定了。

啊,原来早就有http://bbs.mjtd.com/thread-193807-1-1.html
页: [1]
查看完整版本: 利用powershell解压文件