Macros 在sas宏文件名管道中使用引号

Macros 在sas宏文件名管道中使用引号,macros,sas,filenames,dir,sas-macro,Macros,Sas,Filenames,Dir,Sas Macro,我正在使用以下使用文件名管道的宏。但是出现了一个错误,显示无效的选项名“dir”,等等。我怀疑这可能是由于在定义文件名和管道时引用了引号。我想它承认这是一种选择。我试图删除该引号,删除了%bquote并只使用了双引号,但仍然不断出现错误 我正在使用Windows,但也将在Linux上远程运行它。任何想法都将不胜感激 %macro setprogvar(dateval); %global date; %let date=&dateval; %put &date;

我正在使用以下使用文件名管道的宏。但是出现了一个错误,显示无效的选项名“dir”,等等。我怀疑这可能是由于在定义文件名和管道时引用了引号。我想它承认这是一种选择。我试图删除该引号,删除了%bquote并只使用了双引号,但仍然不断出现错误

我正在使用Windows,但也将在Linux上远程运行它。任何想法都将不胜感激

%macro setprogvar(dateval);
  %global date;

  %let date=&dateval;

  %put &date;
  %put &dateval;

  %let filepath = %bquote("C:\Research\SASDataSets\bulk all data &date");

  filename CDR_Bulk pipe "dir &filepath /a:-d-h-s /b /s";

%mend setprogvar;

%setprogvar(20100331);

***LOG************
1      filename CDR_Bulk pipe "dir &filepath /a:-d-h-s /b /s";
                           ---
                           23
ERROR 23-2: Invalid option name dir.

1   !  filename CDR_Bulk pipe "dir &filepath /a:-d-h-s /b /s";
                                          -
                                          23
ERROR 23-2: Invalid option name a.

尝试将宏中的%bquote更改为%str()

%Str()在宏编译时工作,应该屏蔽双引号


HTH

filepath宏变量需要用双引号括起来,因为它包含空格。但由于字符串是双引号,所以需要双引号

filename CDR_Bulk pipe "dir ""&filepath"" /a:-d-h-s /b /s";
文件名CDR_批量管道“dir”和文件路径“/a:-d-h-s/b/s”;非常感谢克里斯和昆汀!这就成功了。现在我要讨论另一个问题,因为我要运行这个unix…当然,谢谢。当我试图点击向上箭头时,我没有意识到点击勾号会起作用。