[LISP函数]:文件操作函数
;;from wkai [www.xdcad.net]
;;20050930
;;功能 :将文本文件读入表中
;;参数fn :文件名
;;返回值 :文件内容表
;;示例:(xdl-file->lst "c:\\1.txt")
(defun xdl-file->lst(fn / re f LINE)
(setq f (open fn "r"))
(while (setq line (read-line f))
(setq re (cons line re))
)
(close f)
(reverse re)
)
;;from wkai [www.xdcad.net]
;;20050930
;;功能 :将字符串表写入文本文件
;;参数lst:字符串表
;; fn :要写入的文件名
;;返回值 :无
;;示例:(xdl-lst->file '("第一行""第二行") "c:\\1.txt")
(defun xdl-lst->file(lst fn / f x)
(setq f (open fn "w"))
(mapcar '(lambda(x)(write-line x f)) lst)
(close f)
)
;;from wkai [www.xdcad.net]
;;20050930
;;功能 :替换文本文件中的部分文本
;;参数newstr:替换文本
;; oldstr:被替换文本
;; file :被操作的文件
;;返回值 :替换次数
;;示例:(xdl-file-substr "第一行" "这是替换后的第一行" "c:\\1.txt")
(defun xdl-file-substr(oldstr newstr file / RE count)
(setq lst (xdl-file->lst file)
oldstr1 (strcat "*" oldstr "*")
count 0
)
(foreach nlst
(if (wcmatch n oldstr1)
(setq n (vl-string-subst newstr oldstr n)
count (1+ count)
)
)
(SETQ RE (CONS N RE))
)
(xdl-lst->file (REVERSE re) file)
count
)
;;from wkai [www.xdcad.net]
;;20050930
;;功能 :替换多个文本文件中的文本
;;参数newstr:替换文本
;; oldstr:被替换文本
;;filelst:目标文件文件名或者文件名列表
;;返回值 :被替换的文件个数
;;示例:(xdl-file-substr-m "这是替换后的第一行" "第一行"'("c:\\1.lsp" "c:\\2.txt"))
(defun xdl-file-substr-m (old newfilelst / files n count)
(setq count 0)
(if (listp filelst)()(setq files(list filelst)))
(foreach n filelst
(if ( > (xdl-file-substr old newn) 0) (setq count (1+ count)))
)
;;from wkai [www.xdcad.net]
;;20050930
;;功能 :获取某路径下所有符合样本的文件名表
;;参数path:路径
;; pattern:文件名样本
;;返回值 :文件名表
;;示例:(xdl-file-allinfolder"c:" "*.exe" t)
(defun xdl-file-allinfolder(path pattern sub / n re)
(setq p (cddr(mapcar '(lambda(x)(strcat path "\\" x))(vl-directory-filespath "*" 0))))
(foreach n p
(if (vl-file-directory-p n)
(if sub (setq re (append (xdl-file-allinfoldern PATTERN sub) re)))
(if (wcmatch (strcat (vl-filename-base n)
(if (vl-filename-extension n)
(vl-filename-extension n)
""
)
)
pattern
)
(setq re (cons n re))
)
)
)
re
)
;;from wkai [www.xdcad.net]
;;20050930
;;功能 :选择一个文件夹,可以创建新文件夹
;;参数msg:提示信息
;;返回值 :文件夹路径
;;示例:(xdl-file-getfolder "选择一个文件夹")
(defun xdl-file-getfolder (msg / WinShell shFolder path catchit)
(vl-load-com)
(setq winshell (vlax-create-object "Shell.Application"))
(setq shFolder (vlax-invoke-method WinShell 'BrowseForFolder 0 msg 255))
(setq
catchit (vl-catch-all-apply
'(lambda ()
(setq shFolder (vlax-get-property shFolder 'self))
(setq path (vlax-get-property shFolder 'path))
)
)
)
(if (vl-catch-all-error-p catchit)
nil
path
)
)
不错,支持楼主:) 挺多的函数 不错 用用看看 下来学习学习! 谢谢楼主分享 谢谢楼主分享
楼主辛苦了,谢谢分享
楼主辛苦了,谢谢分享 很全面的说:) (xdl-file-getfolder "选择一个文件夹")
运行为何显示参数错误? {:1_1:}谢谢分享!拜读了! 非常感谢作者的分享! 感谢分享,{:1_1:}{:1_1:}{:1_1:}
页:
[1]