0

ディレクトリが既に存在するかどうかを確認し、存在しない場合は作成するにはどうすればよいですか?

Windows 7 で SAS EG 5.1 を搭載した SAS 9.3 サーバーを使用しています。

%macro chk_dir(dir=) ; 
   options noxwait; 
   %local rc fileref ; 
   %let rc = %sysfunc(filename(fileref,&dir)) ; 
   %if %sysfunc(fexist(&fileref))  %then 
      %put NOTE: The directory "&dir" exists ; 
   %else 
     %do ; 
         %sysexec md   &dir ; 
         %put %sysfunc(sysmsg()) The directory has been created. ; 
   %end ; 
   %let rc=%sysfunc(filename(fileref)) ; 
%mend chk_dir ; 

このコードは、SAS の Web サイトから取得したものです。

ただし、このマクロを使用してフォルダーを作成しようとすると、フォルダー%chk_dir(dir=E:\foo\20140904_test);の作成に失敗し、次のログ メッセージが表示されます。

MLOGIC(CHK_DIR):  %SYSEXEC  md   &dir
SYMBOLGEN:  Macro variable DIR resolves to E:\foo\20140904_test
ERROR: Shell escape is not valid in this SAS session. 
MLOGIC(CHK_DIR):  %PUT %sysfunc(sysmsg()) The directory has been created.

ディレクトリE:\foo'は存在し、呼び出すと%chk_dir(dir=E:\foo);ログ出力が得られます :NOTE: The directory "E:\foo" exists期待どおり。

4

1 に答える 1