Sas 如何从日期之前创建的文件夹中读取文件

Sas 如何从日期之前创建的文件夹中读取文件,sas,pipe,filenames,Sas,Pipe,Filenames,我试图使用SAS从一个目录中读取多个文件,这些文件是在某个日期之前创建的 我用这个代码来帮助我阅读所有的文件。它工作得很好。现在我发现只有一些在某个日期之前创建的文件才是我需要的。我认为这可以通过FILENAME PIPE Dir选项或infle语句选项来实现,但我找不到答案 代码来源: 目前,您正在使用dir命令读取文件名。现有的/b修饰符表示只打印文件名,不打印其他内容。您希望将其更改为同时读取文件名和文件的创建日期。为了做到这一点,它变得有点混乱。您需要从以下位置更改该管道命令: fil

我试图使用SAS从一个目录中读取多个文件,这些文件是在某个日期之前创建的

我用这个代码来帮助我阅读所有的文件。它工作得很好。现在我发现只有一些在某个日期之前创建的文件才是我需要的。我认为这可以通过FILENAME PIPE Dir选项或infle语句选项来实现,但我找不到答案

代码来源:


目前,您正在使用
dir
命令读取文件名。现有的
/b
修饰符表示只打印文件名,不打印其他内容。您希望将其更改为同时读取文件名和文件的创建日期。为了做到这一点,它变得有点混乱。您需要从以下位置更改该管道命令:

filename DIRLIST pipe 'dir "C:\_today\file*.csv" /b ';
…对此…:

filename DIRLIST pipe 'dir "C:\_today\file*.csv" /tc ';
 Volume in drive C has no label.
 Volume Serial Number is 90ED-A122

 Directory of C:\_today

01/13/2017  09:14 AM             1,991 file1.csv
01/11/2017  11:43 AM               169 file2.csv
...
...
...
01/11/2017  11:43 AM               169 file99.csv

          99 File(s)          6,449 bytes
           0 Dir(s)  57,999,806,464 bytes free
输出将从以下内容更改:

file1.csv
file2.csv
...
…像这样的事情…:

filename DIRLIST pipe 'dir "C:\_today\file*.csv" /tc ';
 Volume in drive C has no label.
 Volume Serial Number is 90ED-A122

 Directory of C:\_today

01/13/2017  09:14 AM             1,991 file1.csv
01/11/2017  11:43 AM               169 file2.csv
...
...
...
01/11/2017  11:43 AM               169 file99.csv

          99 File(s)          6,449 bytes
           0 Dir(s)  57,999,806,464 bytes free
因此,您需要修改创建
dirlist
的数据步骤,以清理新
dir
语句返回的结果。您将需要忽略页眉和页脚,并读取日期和时间等。一旦您以适当的SAS格式获得了该日期和时间,您就可以使用SAS
where
子句来保留您感兴趣的行。我将把这个作为练习留给你做。如果你在这方面有困难,你总是可以提出一个新问题


如果需要有关
dir
命令的更多信息,可以打开命令提示符(开始菜单->运行->“cmd”),然后键入
dir/?
以查看
dir
命令的可用开关列表。您可能会发现与我上面列出的相比,它的开关组合稍有不同,更适合您的任务。

您可以使用
powershell
来利用操作系统的功能

filename get_them pipe 
" powershell -command 
  ""
    dir c:\temp 
    | where {$_.LastWriteTime -gt '3/19/2019'}
    | select -property name
    | ft -hidetableheader
  ""
";

data _null_;
  infile get_them;
  input;
  putlog _infile_;
run;

您如何知道“创建日期”?它是文件名的一部分,还是文件属性的一部分?创建日期在某种程度上是文件名的一部分。每个文件名都是这样的:从06-17-19开始的文件。但似乎这种格式作为日期格式还不够好。所以我计划使用file属性。非常感谢。不,你可以很容易地在SAS中解析这样的日期,不知道为什么你说你不能。发布你尝试过的内容。如果你移动文件,你就有可能改变日期,所以你应该考虑使用文件名中的日期。嗨,Reeza,我使用一个SASC函数来获取那个月号并把它添加到DRILIST DataSet。现在我可以使用where子句过滤掉我不需要的日期。非常感谢你!它比我想象的要简单得多。SCAN()是另一个很好的函数,它可以让您从字符串解析组件。很高兴有帮助。非常感谢你,罗伯特!谢谢!非常详细和清晰。我明天就试试!嗨,罗伯特,我试过/tc,就像你所描述的,它有标题。但我得到了他们的财产信息,比如日期和时间。因为我需要另一个字段来为每个文件添加seq,所以标题也用seq命名。所以我选择了Reeza的建议。但我稍后会尝试使用这个来练习如何清理标题。非常感谢你!顺便说一下,谢谢你让我知道如何找到dir/?选项。因为我在网上找不到任何关于SAS管道目录选项的文档。你好,Richard,这个方法看起来很酷!我还没试过。但我会调查的。非常感谢你!