Изменить текущую папку - PullRequest
8 голосов
/ 03 июня 2011

Я хочу указать текущую папку. Я могу найти текущую папку:

libname _dummy_ ".";
%let folder = %NRBQUOTE(%SYSFUNC(PATHNAME(_DUMMY_)));
%put &folder;

и измените его вручную, дважды щелкнув строку состояния текущей папки, но я бы предпочел кодировать ее Возможно ли это?

Ответы [ 2 ]

10 голосов
/ 03 июня 2011

Например:

x 'cd <full path>';

, например,

x 'cd C:\Users\foo';

SAS распознает, что в ОС была введена команда изменения каталога, и меняет свой текущий рабочий каталог.

0 голосов
/ 05 мая 2017

Имейте в виду, что время выполнения оператора X такое же, как и у других глобальных операторов (заголовок, сноска, параметры и т. Д.). Если он помещен в шаг DATA, оператор X будет выполнен до выполнения шага данных.

Например, предположим, что текущим рабочим каталогом является c:\temp. Следующее записывает HelloWorld.txt в c:\temp2 вместо c:\temp. Во время компиляции SAS запускает оператор X и , затем выполняет шаг данных. Обратите внимание, что в SAS точка (.) является ссылкой на текущий рабочий каталог.

data _null_;
  file '.\HelloWorld.txt';
  put 'Hello, world!';
  x 'cd C:\temp2';
run;

Чтобы изменить каталоги после того, как шаг данных был выполнен, вы можете использовать CALL SYSTEM. Операторы CALL выполняются условно, вызываясь после шага данных.

data _null_;
  file '.\HelloWorld.txt';
  put 'Hello, world!';
  command = 'cd "C:\temp2"';
  call system(command);
run;

Более подробную информацию об этих видах деталей для систем Windows можно найти в Запущенных командах Windows или MS-DOS из SAS

...