【问题标题】:Making Directories in SAS (Windows)在 SAS (Windows) 中创建目录
【发布时间】:2017-12-15 04:03:58
【问题描述】:

我每月运行一些 sas 查询并将数据导出到特定文件夹。问题是我必须在运行代码之前手动创建这些文件夹,这样 SAS 才不会出错。

有什么办法可以自动完成吗?

我的文件夹必须以这种方式命名:

月数 - 年月名称(2011 年 12 月 12 日)。我还想创建一个名为 Excel 的子文件夹。

还有什么方法可以自动填充月份和数字...所以当我在一月份运行它时,它会更改为 (1 - Jan 2012)?

【问题讨论】:

    标签: sas


    【解决方案1】:

    XSYSTASK 命令可以做到这一点。

    但是,如果您在 Enterprise Guide 环境中(我不相信),则默认情况下在 9.2 中是允许的。我认为 9.3 将默认在本地环境中允许它(SAS DUMMY blog)

    例子:

    options noxwait;
    
    data _null_;
     month=strip(put(month(today()),2.));
     year=strip(put(year(today()),4.));
     monname=put(today(),monname3.);
     dir_name=month !! " - " !! monname !! " " !! year;
     call symputx('dir_name',dir_name);
    run;
    %put &dir_name;
    
    x "cd D:\Data";
    x "%str(mkdir %"&dir_name%")";
    

    另一个选项是DCREATE 函数

    例子:

    data _null_;
     month=month(today());
     year=year(today());
    
     dir_name=put(month,2.) !! " - " !! put(today(),monname3.) !! " " !! put(year,4.);
     NewDirectory=dcreate(dir_name,'D:\Data\');
    run;
    

    【讨论】:

    • 谢谢!据我了解..这将在数据文件夹中创建一个名为 New_Dir 的目录....有没有办法让它自动获取当前的月份编号/月份名称和年份?例如。 (2012 年 1 月 1 日)
    • 另外,这似乎只适用于本地驱动器。我将如何修改它以使其适用于网络驱动器?
    • 我更新了我的答案。如果“网络驱动器”是指映射驱动器...那么您仍然应该能够以相同的方式引用它们( K:\ 或 X:\ )...如果您想在服务器上执行此操作,请发布更多信息
    • 对于服务器驱动,原理相同,例如。 mkdir "\\server\share\&dir_name."
    【解决方案2】:

    这是一个简单的解决方案,如果不存在则创建,如果存在则使用。 代码sn-p如下。

    %Macro Verifica_Lib(Libreria,Ruta);
    Data _Null_;
    Call Symput('Destino',&Ruta||Compress('&Libreria'));
    Run;
    %Put &Destino;
    %If (%SysFunc(LibRef(&Libreria))) Ne 0 %Then %Do;
    %Put Verificando existencia de libreria;
    %Put La libreira &Libreria No Existe;
    %Put Se procederaa crearla;
    Options DLCreateDir;
    LibName &Libreria "&Destino";
    %End;
    %Else %Do;
    %Put Verificando existencia de libreria;
    %Put La libreira &Libreria existe;
    %Put Se continuara el proceso;
    %End;
    %Error_Sas(Verificacion de Libreria local);
    %MEnd Verifica_Lib;
    

    【讨论】:

      猜你喜欢
      • 2012-09-13
      • 1970-01-01
      • 2010-09-21
      • 2011-05-05
      • 2023-04-06
      • 2013-08-16
      • 1970-01-01
      • 2017-04-09
      相关资源
      最近更新 更多