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:
x '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.
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(%'));
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(%'));
Thanks polingjw it worked like a charm.
I just thought of an easier solution. Just remove the single quotes from your original X statement, as this syntax is not required.
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
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.