全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3551 13
2013-06-29
我的一段SAS程序主要目的是想获取一个文档下的所有excel文件的名字,程序如下:
options noxwait;
%let path=C:\Documents and Settings\ibm\My Documents\My SAS
Files\9.2\li0oi3pj1\;
x "dir &path.*.xls /b>&path.all.txt";

运行结果是:all.txt文件中什么也没有。

后面再加一段程序:
data _null_;
        infile "&path.all.txt";
        input str:$100.;
            put str;
run;

运行结果如下:
ERROR: 物理文件不存在,C:\Documents and Settings\ibm\My Documents\My SAS  Files\9.2\li0oi3pj1\all.txt
请问有高手能帮忙指点下,这是什么原因吗?有谁有能读取文件名字的程序吗?非常谢谢


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-6-29 14:18:05
使用dopen函数吧

filename dir "C:\Documents and Settings\ibm\My Documents\My SAS
Files\9.2\li0oi3pj1\";
data _null_;
    did=dopen('dir');
if did then do;
   for i=1 to dnum(did);
     file=dread(did,i);
   put file=;
  end; rc=dclose(did);
end;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-6-29 15:02:30
非常谢谢您的回复,不过你的程序我在电脑上运行结果出现错误。我把您的程序改动下,如下:
filename dir "C:\Documents and Settings\ibm\My Documents\My SAS
Files\9.2\li0oi3pj1\";
data fname;
length name $50;
did=dopen('dir');       
if did>0 then  do;
num=dnum(did);
do i=1 to num;
     name=dread(did,i);
   *put name;
  end;
  end;
else do;
rc=dclose(did);
end;
run;
运行出来却得一个观测,也即得不到文件名字,就是文件打开失败,我也不知道是什么原因?请教指点下,谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-6-29 15:11:48
filename dir "C:\Documents and Settings\ibm\My Documents\My SAS Files\9.2\li0oi3pj1\";
这么写 中间断行了,你先打印到日志看看 别输出到数据集
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-6-29 15:18:00
上面的dopen一段的运行结果是did=0,rc有一个数字,其他的值为空。另外请教下,我想读入的是在该文件夹下的所有excel表格,不是该文件夹下的所有文件。那么该怎么读取呢?请求帮助
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-6-29 15:19:27
说明这个路径不对,读取的文件,使用字符串处理函数来进行过滤,后缀为.xls的输出即可
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群