問題描述:遍歷文件夾下的所有文件
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.文件;2.子文件夾;
- 對於文件,進行改名操作;對於文件夾,繼續調用本函數進行處理(因爲這時就又變成了處理一個文件夾的問題)。
cap program drop dirlist
program define dirlist
syntax, 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'
}
end
local cdir = "`c(pwd)'"
dirlist, fromdir("`cdir'")