计划的 .bat 文件 运行ning SAS 脚本无法分配库但在手动 运行 时有效?

Scheduled .bat file running SAS script fails to assign library but works when manually run?

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

的结果

.bat 文件就是:

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

我已经记录了输出,它表明问题是一个库(许多库中只有一个)没有被成功分配:

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% 确定被引用的 folder/library 存在并且具有适当的权限。

当我手动运行同样的脚本时没有问题:

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

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

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

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

-或-

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