BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Saugata
Obsidian | Level 7

Hi,

I am trying something very simple. Just cutting a file (for example doc file) from one loacation and pasting it to another using X command. This should not be a problem but whenever I am using a Macro variable to resolve folder location I am facing problems.

The simple code is:

'move "C:\Data\Learning Products\New Folder\New Microsoft Word Document.doc" "C:\Data\Learning Products"';

This is running perfectly and giving me desired results.

But when I am running the same code using Macro variables:

%let abc=New Folder;

%let xyz=New Microsoft Word Document.doc;

X 'move "C:\Data\Learning Products\&abc.\&xyz" "C:\Data\Learning Products"';

This Code is not working and in the DOS window I am getting: 'The System could not find the file specified' error.

Can anyone please point out the error I am making in the second code?

Thanks in advance for your effort.

1 ACCEPTED SOLUTION

Accepted Solutions
polingjw
Quartz | Level 8

The problem is that the macro variables are not resolved inside the single quote marks.  Try using this:

x %unquote(%str(%')move "C:\Data\Learning Products\&abc\&xyz" "C:\Data\Learning Products"%str(%'));

View solution in original post

4 REPLIES 4
polingjw
Quartz | Level 8

The problem is that the macro variables are not resolved inside the single quote marks.  Try using this:

x %unquote(%str(%')move "C:\Data\Learning Products\&abc\&xyz" "C:\Data\Learning Products"%str(%'));

Saugata
Obsidian | Level 7

Thanks polingjw it worked like a charm.

polingjw
Quartz | Level 8

I just thought of an easier solution.  Just remove the single quotes from your original X statement, as this syntax is not required.

Ksharp
Super User

It is very intesting .

Another workaround way is to make a .bat file ,then use X command to execute it.

%let a=Task temp;
%let b=file.pdf;
data _null_;
 file 'c:\a.bat';
 a=catt('move "c:\',symget('b'),'" "c:\',symget('a'),'" ');
 put a;
run;
options noxwait;
x 'c:\a.bat';
x 'del c:\a.bat';

Ksharp

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 4 replies
  • 1963 views
  • 0 likes
  • 3 in conversation