guosheyang 发表于 2022-8-1 21:24:38

返回指定文件所在目录下的所有该类型文件名的列表

本帖最后由 guosheyang 于 2022-8-2 09:09 编辑

   给朋友们共享个自定义命令,getfiles_of_dir功能:返回指定文件所在目录下的所有该类型文件名的列表
;自定义命令: 返回指定文件所在目录下的所有该类型文件名的列表(defun c:getfiles_of_dir(/ F1 HZ MLM SYWJWJMB) (setq hz(getstring "\n请指定文件后缀:")) (setq f1(GETFILED "选取文件" "" hz 4)) (setq mlm(vl-filename-directory f1));目录名 (setq sywj(vl-directory-files mlm (strcat "*." hz) 1));所有文件 (foreach x sywj(setq wjmb(cons(vl-filename-base x)wjmb)) ))

magicheno 发表于 2022-8-1 22:31:12

感谢大佬分享

gaics 发表于 2022-8-2 08:31:45

本帖最后由 gaics 于 2022-8-2 08:33 编辑

(setq sywj (vl-directory-files mlm (strcat "*." hz) 1))
建议vl-directory-files函数尾部加“1”,仅列出文件,这样后缀使用通配符*就只输出文件名,而不会包含“..”“.”

修改前后对比:
命令: GETFILES_OF_DIR
请指定文件后缀:*
("设计说明" "封面图" "v2_原方案" ".." ".")


命令: GETFILES_OF_DIR
请指定文件后缀:*
("设计说明" "封面图" "v2_原方案")

guosheyang 发表于 2022-8-2 09:05:24

本帖最后由 guosheyang 于 2022-8-2 09:26 编辑

gaics 发表于 2022-8-2 08:31
(setq sywj (vl-directory-files mlm (strcat "*." hz) 1))
建议vl-directory-files函数尾部加“1”,仅列 ...
好的   谢谢你指出问题! 不过我刚才在我的电脑上测试了下,即使不加那个1,运行后也没有列出没有后缀的哪两个 点和点点的情况,不知道是设置啥的不一样还是啥的? 当然加上1可能稳妥一点

gaics 发表于 2022-8-2 09:54:40

guosheyang 发表于 2022-8-2 09:05
好的   谢谢你指出问题! 不过我刚才在我的电脑上测试了下,即使不加那个1,运行后也没有列出没有后缀的 ...

不客气!可能是软件版本问题?你的第一行变量SYWJWJMB没有空格,不过这个可能没有影响。

tianbeiyuan 发表于 2022-10-20 10:09:35

感谢大佬分享
页: [1]
查看完整版本: 返回指定文件所在目录下的所有该类型文件名的列表