【发布时间】:2021-02-15 15:01:07
【问题描述】:
我在通过电子邮件将基本文件信息发送给我时遇到了一些问题。
从互联网上的各种脚本中,我得到了以下宏,该宏用于输出我想要的信息。
%macro list_files(dir);
%local filrf rc did memcnt name i;
%let rc=%sysfunc(filename(filrf,&dir));
%let did=%sysfunc(dopen(&filrf));
%let ymd = %sysfunc(putn(%sysfunc(today()).,yymmdd6.));
%if &did eq 0 %then %do;
%put Directory &dir cannot be open or does not exist;
%return;
%end;
%do i = 1 %to %sysfunc(dnum(&did));
%let name=%qsysfunc(dread(&did,&i));
%if %qscan(%qscan(&name,1,_,b),1,.) eq &ymd. %then %do;
%let rc=%sysfunc(filename(fref,&dir\&name));
%let fid=%sysfunc(fopen(&fref));
%let CreatedDT=%qsysfunc(finfo(&fid,Create Time));
%let ModifiedDT=%qsysfunc(finfo(&fid,Last Modified));
%put &dir\&name,&CreatedDT,&ModifiedDT;
%let fid=%sysfunc(fclose(&fid));
%let rc=%sysfunc(filename(fref));
%end;
%end;
%let rc=%sysfunc(dclose(&did));
%let rc=%sysfunc(filename(filrf));
%mend list_files;
%list_files(C:\logs\);
注意:宏确实需要特定的文件名格式才能工作。例如,如果我有以下日志文件:
ProgramA_210215.log
ProgramA_210214.log
ProgramA_210213.log
ProgramB_210214.log
ProgramB_210213.log
ProgramC_210215.log
ProgramC_210214.log
ProgramC_210213.log
...我在 2021-02-15 运行它,然后我只得到:
ProgramA_210215.log
ProgramC_210215.log
...非常适合我的需求。
我的问题是,我不知道如何将输出作为电子邮件发送给我,或者将输出转储到文件中,然后我可以将其附加到电子邮件中。
注意 2:我最初将宏写为“普通数据调用”(?),除了 CreateDT 和 ModifiedDT 之外,所有文件都可以正常工作,它们对于所有文件都是静态的。宏版本至少可以工作并显示正确(和不同)的 CreateDT 和 ModifiedDT。
我最终想要实现的是,向我发送一封电子邮件,其中包含今天的日志文件及其创建日期时间和上次修改日期时间的附件。
我想我只是错过了一个简单的步骤,但不知道是哪一个:(。
【问题讨论】:
-
嗨!我们在这里尽量保持每个问题一个问题。如果您想将后续问题作为一个单独的问题提出,那么这样做是合适的。谢谢!
标签: email sas output attachment sas-macro