明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3160|回复: 5

[【高飞鸟】] 【飞鸟集】在lisp中巧用DOS.

  [复制链接]
发表于 2007-8-23 18:41 | 显示全部楼层 |阅读模式
根据网上的帖子得出的一种方法,供参考。

下面是一个在lisp中巧用DOS的例子:

如何得到网上邻居的电脑名
  1. (defun c:net(/ f cmd lst name)
  2.   (setq cmd (getvar "cmdecho"))
  3.   (setvar "cmdecho" 0)                           ;关闭命令回显
  4.   (command ".shell" "net view > c:\\1.txt|exit") ;用dos命令查看并输出到1.txt然后关闭dos
  5.   (command ".delay" "200")                       ;因为lisp执行速度快于dos,所以延时0.2秒
  6.   (setvar "cmdecho" cmd)
  7.   (setq f (open "c:\\1.txt" "r"))                ;打开dos下创建的文件
  8.   (read-line f)                                  ;前三行与网上邻居的名字无关
  9.   (read-line f)                                 
  10.   (read-line f)
  11.   (while (and (setq name (read-line f))         
  12.        (= (substr name 1 1) "\")
  13.   )
  14.     (setq name (substr name 3))                  ;从第三个字符开始是其名字
  15.     (setq name (vl-string-right-trim " " name))  ;删除右边的多余空格字符
  16.     (setq lst (cons name lst))                   ;构造到列表中去
  17.   )
  18.   (close f)                       
  19.   (reverse lst)                                  ;顺序要颠倒
  20. )
思路如下:用DOS命令查看网上邻居,然后把查看后的结果输出到文件,最后通过读文件得到结果。
这个例子可以延伸。是一个不用doslib的办法。

评分

参与人数 1明经币 +1 收起 理由
自贡黄明儒 + 1

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

发表于 2007-8-23 18:59 | 显示全部楼层

最好将文件放到临时目录下,并且文件名不能与其他文件冲突,文件属性不能为只读或隐藏等。这样才能保证写入文件不会出错。

总之要加容错处理啦。。。。

发表于 2012-6-18 14:59 | 显示全部楼层
很好的程序,谢谢楼主分享,要是不显示那个黑色窗口就好了
发表于 2013-8-13 12:02 | 显示全部楼层
这本来是好东西,关键是对dos不熟
发表于 2014-8-21 11:46 | 显示全部楼层
学习一下,谢谢分享.
发表于 2021-12-26 11:39 | 显示全部楼层
留个记号,备用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-2 11:57 , Processed in 0.392347 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表