找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3842|回复: 12

[LISP函数]:文件操作函数

[复制链接]
发表于 2005-9-30 17:20:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

  1. ;;from wkai [[url]www.xdcad.net[/url]]
  2. ;;20050930
  3. ;;功能   :将文本文件读入表中
  4. ;;参数fn :文件名
  5. ;;返回值 :文件内容表
  6. ;;示例:(xdl-file->lst "c:\\1.txt")
  7. (defun xdl-file->lst(fn / re f LINE)
  8.   (setq f (open fn "r"))
  9.   (while (setq line (read-line f))
  10.     (setq re (cons line re))
  11.     )
  12.   (close f)
  13.   (reverse re)
  14.   )

  1. ;;from wkai [[url]www.xdcad.net[/url]]
  2. ;;20050930
  3. ;;功能   :将字符串表写入文本文件
  4. ;;参数lst:字符串表
  5. ;;    fn :要写入的文件名
  6. ;;返回值 :无
  7. ;;示例:(xdl-lst->file '("第一行""第二行") "c:\\1.txt")
  8. (defun xdl-lst->file(lst fn / f x)
  9.   (setq f (open fn "w"))
  10.   (mapcar '(lambda(x)(write-line x f)) lst)
  11.   (close f)
  12.   )

  1. ;;from wkai [[url]www.xdcad.net[/url]]
  2. ;;20050930
  3. ;;功能   :替换文本文件中的部分文本
  4. ;;参数newstr:替换文本
  5. ;;    oldstr:被替换文本
  6. ;;     file :被操作的文件
  7. ;;返回值 :替换次数
  8. ;;示例:(xdl-file-substr "第一行" "这是替换后的第一行" "c:\\1.txt")
  9. (defun xdl-file-substr(oldstr newstr   file / RE count)
  10.   (setq        lst    (xdl-file->lst file)
  11.         oldstr1 (strcat "*" oldstr "*")
  12.         count 0
  13.   )
  14.   (foreach n  lst
  15.     (if        (wcmatch n oldstr1)
  16.       (setq n          (vl-string-subst newstr oldstr n)
  17.             count (1+ count)
  18.             )
  19.       )
  20.     (SETQ RE (CONS N RE))
  21.     )
  22.   (xdl-lst->file (REVERSE re) file)
  23.   count
  24.   )

  1. ;;from wkai [[url]www.xdcad.net[/url]]
  2. ;;20050930
  3. ;;功能   :替换多个文本文件中的文本
  4. ;;参数newstr:替换文本
  5. ;;    oldstr:被替换文本
  6. ;;filelst:目标文件文件名或者文件名列表
  7. ;;返回值 :被替换的文件个数
  8. ;;示例:(xdl-file-substr-m "这是替换后的第一行" "第一行"  '("c:\\1.lsp" "c:\\2.txt"))
  9. (defun xdl-file-substr-m (old new  filelst / files n count)
  10.   (setq count 0)
  11.   (if (listp filelst)()(setq files(list filelst)))
  12.   (foreach n filelst
  13.     (if ( > (xdl-file-substr old new  n) 0) (setq count (1+ count)))
  14.   )
  15.    

  1. ;;from wkai [[url]www.xdcad.net[/url]]
  2. ;;20050930
  3. ;;功能   :获取某路径下所有符合样本的文件名表
  4. ;;参数path:路径
  5. ;; pattern:文件名样本
  6. ;;返回值 :文件名表
  7. ;;示例:(xdl-file-allinfolder  "c:" "*.exe" t)
  8. (defun xdl-file-allinfolder(path pattern sub / n re)
  9.   (setq p (cddr(mapcar '(lambda(x)(strcat path "\" x))(vl-directory-files  path "*" 0))))
  10.   (foreach n p
  11.     (if (vl-file-directory-p n)
  12.       (if sub (setq re (append (xdl-file-allinfolder  n PATTERN sub) re)))
  13.       (if (wcmatch (strcat (vl-filename-base n)
  14.                            (if (vl-filename-extension n)
  15.                              (vl-filename-extension n)
  16.                              ""
  17.                            )
  18.                    )
  19.                    pattern
  20.           )
  21.         (setq re (cons n re))
  22.       )
  23.     )
  24.   )
  25.   re
  26.   )

  1. ;;from wkai [[url]www.xdcad.net[/url]]
  2. ;;20050930
  3. ;;功能   :选择一个文件夹,可以创建新文件夹
  4. ;;参数msg:提示信息
  5. ;;返回值 :文件夹路径
  6. ;;示例:(xdl-file-getfolder "选择一个文件夹")
  7. (defun xdl-file-getfolder (msg / WinShell shFolder path catchit)
  8.   (vl-load-com)
  9.   (setq winshell (vlax-create-object "Shell.Application"))
  10.   (setq shFolder (vlax-invoke-method WinShell 'BrowseForFolder 0 msg 255))
  11.   (setq
  12.     catchit (vl-catch-all-apply
  13.               '(lambda ()
  14.                  (setq shFolder (vlax-get-property shFolder 'self))
  15.                  (setq path (vlax-get-property shFolder 'path))
  16.                )
  17.             )
  18.   )
  19.   (if (vl-catch-all-error-p catchit)
  20.     nil
  21.     path
  22.   )
  23. )

本帖被以下淘专辑推荐:

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 221个

财富等级: 日进斗金

发表于 2013-8-11 10:02:39 | 显示全部楼层
不错,支持楼主:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-10-27 20:52:09 | 显示全部楼层
挺多的函数 不错 用用看看
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3732个

财富等级: 富可敌国

发表于 2013-10-27 22:16:10 | 显示全部楼层
下来学习学习!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 305个

财富等级: 日进斗金

发表于 2014-3-23 21:36:57 | 显示全部楼层
谢谢楼主分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8727个

财富等级: 富甲天下

发表于 2014-6-11 16:31:20 | 显示全部楼层
谢谢楼主分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 34个

财富等级: 招财进宝

发表于 2014-12-10 15:12:30 | 显示全部楼层

楼主辛苦了,谢谢分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 34个

财富等级: 招财进宝

发表于 2014-12-10 15:20:38 | 显示全部楼层

楼主辛苦了,谢谢分享
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 475个

财富等级: 日进斗金

发表于 2015-5-11 07:58:31 | 显示全部楼层
很全面的说:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 312个

财富等级: 日进斗金

发表于 2016-11-9 22:47:31 | 显示全部楼层
(xdl-file-getfolder "选择一个文件夹")
运行为何显示参数错误?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 219个

财富等级: 日进斗金

发表于 2018-4-2 07:31:53 | 显示全部楼层
谢谢分享!拜读了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 13个

财富等级: 恭喜发财

发表于 2020-2-14 09:37:26 | 显示全部楼层
非常感谢作者的分享!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 33个

财富等级: 招财进宝

发表于 2022-6-8 07:49:48 | 显示全部楼层
感谢分享,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-27 13:04 , Processed in 0.456336 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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