运行SAS脚本的预定.bat文件无法分配库但在手动运行时有效吗?

时间:2015-05-18 13:19:32

标签: batch-file sas scheduled-tasks

我有一个计划任务,应该每天运行一个SAS脚本。但是,它不成功,导致0x2的结果。

.bat文件只是:

"E:\Program Files\SAS\SASFoundation\9.2\Sas.exe" -sysin "C:\Documents and Settings\username\Desktop\myfolder\myscript.sas"

我已记录输出,它表明问题在于未成功分配库(并且只有1个库):

2          libname COOLDB ORACLE user=Laureate pw=mypass path=COOLDB schema=ODSMGR;
NOTE: Libref COOLDB was successfully assigned as follows: 
      Engine:        ORACLE 
      Physical Name: COOLDB
3          %let prj = T:\DNA\New Orleans\username\SAS Export Folder;
4          libname dt "&prj.";
NOTE: Library DT does not exist.

其中包含第一行只是为了证明它一直运行到那一点。

这对我来说很奇怪,因为我100%确定知道正在引用的文件夹/库存在且具有适当的权限。

当我手动运行相同的脚本时,没问题:

3    %let prj = T:\DNA\New Orleans\username\SAS Export Folder;
4    libname dt "&prj.";
NOTE: Libref DT was successfully assigned as follows:
      Engine:        V9
      Physical Name: T:\DNA\New Orleans\username\SAS Export Folder

1 个答案:

答案 0 :(得分:4)

根据服务器的不同,某些系统不喜欢空格(就像SAS Export Folder中那样),因此在这些情况下,您需要确保libname语句中的路径用引号括起来。 / p>

正如乔所指出的那样,不要在引号上加倍,所以将路径传递为:

%let prj=%str(T:\DNA\New Orleans\username\SAS Export Folder);
libname dt "&prj.";

-OR -

%let prj=%str("T:\DNA\New Orleans\username\SAS Export Folder");
libname dt &prj;