Stata编程运用-运用递归函数列示文件夹内所有文件

来源:互联网 发布:淘宝飞鱼运动卖假货 编辑:程序博客网 时间:2024/05/21 06:28

问题描述:遍历文件夹下的所有文件

E:\project\abc\

E:\project\abc\abc000001(1).txt

E:\project\abc\abc000002(1).xls

E:\project\abc\def\def000001(1).txt

E:\project\abc\ghi\


需要将所有文件的(1)去掉。



解决难点:需要给出所有的文件,但有些目录下是没有文件的。

解决方案:利用递归函数,遍历所有的文件。

思路如下:

  1. 对于一个文件夹下的“对象”可以分成两类:1.文件;2.子文件夹;
  2. 对于文件,进行改名操作;对于文件夹,继续调用本函数进行处理(因为这时就又变成了处理一个文件夹的问题)。


cap program drop dirlist program define dirlistsyntax, fromdir(string)//对于当前文件夹(由参数`fromdir'给定)下的对象,可以分为“文件”和文件夹两类//其中文件可以通过 local localname: dir dirname files "*" 存放在宏 localname中//而文件夹则可以通过 local localname: dir dirname dirs "*" //1.文件-->输出local flist: dir "`fromdir'" files "*"foreach f of local flist {   *dis "`fromdir'/`f'"}//2.子目录-->递归调用主函数local dlist: dir "`fromdir'" dirs "*"foreach d of local dlist {   dirlist , fromdir("`fromdir'/`d'") `list'}endlocal cdir = "`c(pwd)'"dirlist, fromdir("`cdir'")


0 0
原创粉丝点击