(vl-catch-all-apply
        'vlax-invoke
        (list (vlax-create-object "wscript.shell") "run" (strcat "curl " url " -o " "d:/down.txt") 0 1)
)



我现在用的是以上方法来下载gitee的文件到指定路径下、但是遇到win7系统或者个别情况无法下载、
想请教一下还有没有其他更通用的方法可以下载文件



网友答:
tryhi 发表于 2025-10-23 10:48
判断联网随便找个现成的获取网络时间的函数不就行了,比如
  • (_get-url-time “https://www.baidu.com” ...
    1. (defun d_getremotefileheaders(/ objhttp remotefilename result)
    2.         (setq remotefilename "https://www.baidu.com")
    3.         (if        (setq objhttp (vlax-create-object "WinHTTP.WinHTTPRequest.5.1"))
    4.                 (progn
    5.                         (setq result
    6.                                 (vl-catch-all-apply
    7.                                         '(lambda ()
    8.                                                  (vlax-invoke-method objhttp "Open" "HEAD" remotefilename :vlax-false)
    9.                                                  (vlax-invoke objhttp "Send")
    10.                                                  (if
    11.                                                          (= (vlax-get-property objhttp "Status")200)
    12.                                                          (mapcar
    13.                                                                  '(lambda (H / R)
    14.                                                                                 (setq R (vl-catch-all-apply 'vlax-invoke-method (list objhttp "GetResponseHeader" H )))
    15.                                                                                 (cons h
    16.                                                                                         (if(not (vl-catch-all-error-p R))
    17.                                                                                                 R
    18.                                                                                         ) ;_ if
    19.                                                                                 ) ;_ CONS
    20.                                                                         ) ;_ lambda
    21.                                                                  (LIST "Date")
    22.                                                          ) ;_ PROGN
    23.                                                  ) ;_ if
    24.                                          ) ;_ lambda
    25.                                 ) ;_ VL-CATCH-ALL-APPLY
    26.                         ) ;_ setq
    27.                         (vlax-release-object objhttp)
    28.                         (if (and result (not (vl-catch-all-error-p result)))
    29.                                 result
    30.                         ) ;_ if
    31.                 ) ;_ PROGN
    32.         ) ;_ if
    33. )

    34. (d_getremotefileheaders)
    35. 直接这样也行吧、反正有返回数据就是联网了


    网友答: XML+ADO
    1. ((lambda (url fnn / ado dat xml)
    2.    (vl-catch-all-apply
    3.      (function
    4.        (lambda ()
    5.          (foreach abc '("MSXML2.ServerXMLHTTP"
    6.                         "Microsoft.XMLHTTP"
    7.                         "MSXML2.XMLHTTP"
    8.                         "MSXML2.XMLHTTP.3.0"
    9.                         "MSXML2.XMLHTTP.4.0"
    10.                         "MSXML2.XMLHTTP.5.0"
    11.                         "MSXML2.XMLHTTP.6.0"
    12.                        )
    13.            (or xml
    14.                (setq xml (vlax-get-or-create-object abc))
    15.            )
    16.          )
    17.          (vlax-invoke-method
    18.            xml "open" "get" url        "false"        nil nil)
    19.          (vlax-invoke-method xml "send" "")
    20.          (and (equal 200 (vlax-get-property xml "status"))
    21.               (equal 4 (vlax-get-property xml "readyState"))
    22.               (setq dat        (vlax-get-property xml "responseBody")
    23.                     xml        (vlax-release-object xml)
    24.               )
    25.          )
    26.        )
    27.      )
    28.    )
    29.    (and        dat
    30.         (or fnn (setq fnn (vl-filename-mktemp)))
    31.         (setq ado (vlax-create-object "ADODB.Stream"))
    32.         (progn (vlax-put-property ado "Type" 1)
    33.                (vlax-invoke ado "Open" nil nil nil nil nil)
    34.                (vlax-invoke-method ado "Write" dat)
    35.                (vlax-invoke-method ado "saveToFile" fnn 2)
    36.                (vlax-invoke-method ado "Close")
    37.                (vlax-release-object ado)
    38.         )
    39.    )
    40.    (findfile fnn)
    41. )
    42.   "https://gitee.com/...VLX"
    43.   (vl-filename-mktemp nil nil ".VLX")
    44. )


    网友答: 本帖最后由 22693766 于 2025-10-25 04:28 编辑


    gitee看着免费, 其实最贵

    你可能觉得我这种想杞人忧天,
    Oracle公司知道吧, 国际大厂, Oracle现在估计还有免费赠送服务器.
    我当时眼馋, 心想永久免费服务器, 那我以后岂不是零成本???
    想想都好兴奋, 折腾了好几天终于上线.
    前期也还稳定, 结果用了几个月, 直接关了.
    找客服, 人家客服国外的, 语言不通, 沟通起来很累.
    人家一句"您的账户有安全隐患",  来来回回就这么一句, 给我真的心烦气躁.

    摊上这事, 一点办法都没有.  
    "您的账户有安全隐患",哈哈....



    网友答:
    kozmosovia 发表于 2025-10-21 23:01
    XML+ADO

    谢谢大神、我试一下

    网友答:
    kozmosovia 发表于 2025-10-21 23:01
    XML+ADO

    大神!再请教一下有没有啥通用的方法可以判断是否联网、能够支持win7 Win10 Win11的、并且能识别本地连接、WiFi和热点

    网友答:
    xiaocainiao 发表于 2025-10-22 08:46
    大神!再请教一下有没有啥通用的方法可以判断是否联网、能够支持win7 Win10 Win11的、并且能识别本地连接 ...

    识别网卡就能区分 本地连接  wifi

    网友答:
    jun353835273 发表于 2025-10-22 08:52
    识别网卡就能区分 本地连接  wifi

    主要是不懂怎么判断是否联网、之前在明经上找到一个判断程序、但有时候WiFi识别不出来

    网友答: 读取一个网址看返回数据。联网有正确数据,否则会返回错误信息

    网友答:
    kozmosovia 发表于 2025-10-22 09:41
    读取一个网址看返回数据。联网有正确数据,否则会返回错误信息

    关键就是不会读取、对网络这块一窍不通、现在用的都是咱们论坛上现成的代码

    网友答:
    xiaocainiao 发表于 2025-10-22 13:01
    关键就是不会读取、对网络这块一窍不通、现在用的都是咱们论坛上现成的代码

    你在gitee上自己建一个文本文件,写上一个定好的内容,然后用上面下载的代码中上半部分获取dat的代码去读那个文本文件,内容对就是联网了,不对就是没联网。

    网友答:
    kozmosovia 发表于 2025-10-22 14:04
    你在gitee上自己建一个文本文件,写上一个定好的内容,然后用上面下载的代码中上半部分获取dat的代码去读 ...

    谢谢大神!我尝试一下
  • 上一篇:LISP调用Jscript转义汉字,实现LSP/VLX跨越lispsys
  • 下一篇:没有了