如何从带有 sas 宏的文件夹中选取最新一周的文件?

发布于 2024-11-17 09:57:03 字数 215 浏览 4 评论 0原文

我需要从文件夹中选择最新的一周文件,但我不想每次都输入一周。这是一份每周报告,我想让它像按 F3 并运行它一样简单。

eg. sales_data_201123
    sales_data_201124

等等。在上面的示例中,应选择 sales_data_201124,因为它是最新的。

请指教! 拉詹斯

I need to pick the latest week file from a folder, but I don't want to enter the week every time. It's a weekly report which I want to make as easy as pressing F3 and having it run.

eg. sales_data_201123
    sales_data_201124

and so on. In the above example, sales_data_201124 should be selected since it's the latest one.

Please advise!
Rajans

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

和影子一齐双人舞 2024-11-24 09:57:03

有几种方法可以解决这个问题。一种方法是查找特定文件 - 例如,使用 today() 函数结合 intnx() 来计算您要查找的文件的名称。正在查找然后打开该文件。

然而,我认为一种更简单的方法是将目录中的所有文件名读取到一个数据集中:

filename fnames pipe 'dir c:\temp\* /b';

data fnames;
  infile fnames pad missover;
  input @1 filename $255.;
  dt=scan(filename,3,'_');
run;

然后只需对 fnames 进行排序并选择最后一个,或者更好的是,使用 proc sql 将文件名放入宏变量中:

proc sql noprint;
  select filename into :fname
  from fnames
  having dt=max(dt);
quit;

现在可以使用 &fname 调用要打开的文件。

There are a few ways you could approach this. One would be to look for a specific file -- for example, use the today() function combined with intnx() to calculate what is the name of the file you're looking for and then open that file.

I think an easier approach, however, would be to read all the file names in the directory into a data set:

filename fnames pipe 'dir c:\temp\* /b';

data fnames;
  infile fnames pad missover;
  input @1 filename $255.;
  dt=scan(filename,3,'_');
run;

Then just sort fnames and choose the last one, or better yet, use proc sql to put the filename into a macro variable:

proc sql noprint;
  select filename into :fname
  from fnames
  having dt=max(dt);
quit;

The file you want to open can now be called with &fname.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文