我正在使用以下使用文件名管道的宏。但是得到一个错误,指出无效的选项名称" 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.
答案 0 :(得分:1)
尝试将宏中的%bquote更改为%str()。
%Str()在宏编译时工作,应掩盖双引号。
HTH
答案 1 :(得分:1)
文件路径宏变量需要用双引号括起来,因为它包含空格。但由于你的字符串是双引号,你需要双引号......
filename CDR_Bulk pipe "dir ""&filepath"" /a:-d-h-s /b /s";