假设d:\vfpdbf\dbase 下面有上百份DBF格式的文件,当然,如果是XLS活CSV格式,做适当调整就可以了。
一下是我之前一直使用的:
x "DIR d:\vfpdbf\dbase *.DBF /b >E:\list";
%macro daoru(name) ;
PROC IMPORT OUT= WORK.&name
DATAFILE= "d:\vfpdbf\dbase\&name..DBF"
DBMS=DBF REPLACE;
GETDELETED=NO;
RUN;
%mend;
data _null_;
infile "E:\list";
input str:$100.;
call execute(compress('%daoru('||scan(str,1,'.')||');'));
run;
以下是赛诺菲Sanofi-Aventis 的李友老师提供的程序,可以读取文件下中所有子文件夹中的数据:
%macro mReadfolder;
%let filrf=mydir;
%let rc=%sysfunc(filename(filrf,"D:\Management\ACTIME"));
%let did=%sysfunc(dopen(&filrf));
%let lstname=;
%let memcount=%sysfunc(dnum(&did));
%if &memcount > 0 %then
%do i=1 %to &memcount;
%let lstname=%sysfunc(dread(&did,&i));
proc import out=a
datafile= "D:\Management\ACTIME\&lstname"
dbms=excel2000 replace;
run;
%end;
%let rc=%sysfunc(dclose(&did));
%mend mReadfolder;
%mReadfolder;