【问题标题】:Copying files from one directory to another in SAS EG is not working在 SAS EG 中将文件从一个目录复制到另一个目录不起作用
【发布时间】:2020-08-06 21:01:35
【问题描述】:

我试图在 SAS EG 中将文件从一个目录复制到另一个目录,但它不起作用。

这里的基本思路是将 .xlsm 文件转换为 .xlsx 文件。

%sysexec( copy "&path.\excel1.xlsm"
               "&path.\excel1.xlsx" ) ;

我在 SAS EG 中没有收到任何错误,但没有任何反应(没有复制文件),有人知道原因吗?

【问题讨论】:

  • 您的 SAS 会话是否真的允许您从 SAS 代码运行操作系统命令?该路径是否实际存在于运行 SAS 的机器上(不是您用来运行名为 Enterprise Guide 的用户界面的机器)。
  • 路径是有效的宏变量。我不确定如何判断是否可以在 sas EG 中运行操作系统命令。

标签: sas copy


【解决方案1】:

确保您的 SAS 会话已打开 XMCD 选项。

XCMD              Enables the X command in SAS.

您可以使用 PROC OPTIONS 或 GETOPTION() 函数来查看当前设置。此选项必须在会话开始时设置,因此您可能需要将使用 Enterprise Guide 连接的服务器修改为启用该选项的服务器(或修改服务器的配置)。

还要确保您使用的命令和路径在运行 SAS 代码的服务器上有效。您可以查看一些自动宏变量,如 SYSSCP、SYSHOSTNAME 和 SYSHOSTINFO,以了解运行 SAS 的操作系统。

22    %put &=sysscp &=syshostname &=syshostinfolong ;
SYSSCP=WIN SYSHOSTNAME=XXXXXX SYSHOSTINFOLONG=X64_10PRO WIN 10.0.18362  Workstation

如果您仍然有问题,您还可以使用其他方法来运行您的命令,这样您就可以更轻松地查看操作系统可能生成的消息。例如使用 PIPE 文件名引擎。

data _null_;
  infile %sysfunc(quote(copy "&path.\excel1.xlsm" "&path.\excel1.xlsx" 2>&1)) pipe;
  input;
  put _infile_;
run;

【讨论】:

  • 谢谢,文件复制成功。似乎最后一段代码有效,我从系统宏中得到的内容如下。 '%put &=sysscp &=syshostname &=syshostinfolong ; SYMBOLGEN:宏变量SYSHOSTINFOLONG解析为X64_SRV16 WIN 10.0.14393 Server' Workstation和Server有什么区别?
  • 除了使用 Windows 来管理您的 PC 之外,还有一个服务器版本可用于运行多用户环境。 Enterprise Guide 是一个用于生成和运行 SAS 代码并收集输出的工具。它连接到 SAS 服务器会话以便能够运行 SAS 代码。因此,您的 SAS 服务器会话正在 Windows Server 机器上运行。这可能不是您用来运行客户端应用程序企业指南的机器。因此,请注意您在 SAS 代码中使用的路径,它们在运行 SAS 的机器上有效。
猜你喜欢
  • 1970-01-01
  • 2012-02-15
  • 1970-01-01
  • 2017-11-18
  • 2013-06-01
  • 2020-06-22
  • 2014-08-12
  • 2013-10-24
相关资源
最近更新 更多