使用SAS和MKDIR在Windows中创建一个目录结构(Using SAS and mkdir t

2019-09-22 17:07发布

我想从内部SAS在Windows中创建的目录结构。 最好使用可以让我指定一个UNC命名约定,如方法:

\\computername\downloads\x\y\z

我已经看到使用DOS在网络上对SAS许多例子mkdir命令经由被称为%sysexec()x命令。 关于mkdir命令的好处是,它会创建任何中间文件夹,如果他们也根本不存在。 我成功地从测试提示以下命令和它的表现如预期(报价似乎并不重要,因为我有我的路径名无空格):

mkdir \\computername\downloads\x\y\z
mkdir d:\y
mkdir d:\y\y
mkdir "d:\z"
mkdir "d:\z\z"
mkdir \\computername\downloads\z\z\z
mkdir "\\computername\downloads\z\z\z"

从SAS以下运行罚款:

x mkdir d:\x;
x 'mkdir d:\y';
x 'mkdir "d:\z"';
x mkdir \\computername\downloads\x;
x 'mkdir \\computername\downloads\y';

但是从SAS,例如,在运行时,这些不工作:

x mkdir d:\x\x;
x 'mkdir d:\y\y';
x 'mkdir "d:\z\z"';
x mkdir \\computername\downloads\x\y\z ;
x 'mkdir "\\computername\downloads\z"';

** OR **;

%sysexec mkdir "\\computername\downloads\x\y\z ";

** OR **;

filename mkdir pipe "mkdir \\computername\downloads\x\y\z";
data _null_;
  input mkdir;
  put infile;
run;

这是行不通的。 不仅如此,但窗口立即关闭,即使我有options xwait规定,所以没有机会看到任何错误消息。 我已经尝试了所有方法,同时与UNC路径和驱动器盘符路径,即。 D:\downloads\x\y\z

如果我看的错误消息是通过操作系统返回:

%put %sysfunc(sysrc()) %sysfunc(sysmsg());

我得到如下:

-20006 WARNING: Physical file does not exist, d:\downloads\x\x\x.

综观对文档mkdir命令看来,它仅支持“命令扩展”时被启用创建中间文件夹。 这可以通过加入可实现/E:ONcmd.exe 。 我试图改变我的代码使用方法:

cmd.exe /c /E:ON mkdir "\\computername\downloads\x\y\z"

和仍然没有运气!

谁能告诉我为什么每个人都在互联网上其他人似乎能够从内部SAS得到这个工作,除了我? 再次,它工作正常,在DOS提示符下 - 刚刚在SAS没有。

我宁愿一个答案是专门解决这个问题(我知道有使用多个步骤或其他解决方案dcreate()

我跑的WinXP 32位,SAS 9.3 TS1M2。 谢谢。

Answer 1:

你需要使用mkdir选项-p ,这将创造所有子文件夹

x mkdir -p "c:\newdirectory\level 1\level 2";


Answer 2:

下面是使用LIBNAME语句来创建一个目录一招

options dlcreatedir; libname newdir "/u/sascrh/brand_new_folder";

我相信这是比X说法更可靠。

来源: SAS招:拿到LIBNAME语句来为您创建的文件夹



Answer 3:

我在WinXP以及使用SAS 9.3 TS1M1。 作为广告对我来说,以下工作:

122  options noxwait;
123  data _null_;
124    rc = system('mkdir \\W98052442n3m1\public\x\y\z');
125    put rc=;
126  run;

rc=0
NOTE: DATA statement used (Total process time):
      real time           1.68 seconds
      cpu time            0.03 seconds

这是我的实际日志文件; “公开”是被创建的网络PC和整个路径上的Windows共享文件夹。 也许使用SYSTEM功能做的伎俩。 我从来没有使用X命令自己。



Answer 4:

你需要引用你的X命令,例如

x 'mkdir "c:\this\that\something else"' ;

另外,我从来没有使用UNC路径,例如问题

x "\\server.domain\share\runthis.exe" ;


Answer 5:

这似乎工作只是用DOS窗口保持开放的罚款。 您可能需要XSYNC选项。 我使用9.3 TS1M1 64位VMWARE下在MAC:

options xwait xsync;
x mkdir c:\newdirectory;


文章来源: Using SAS and mkdir to create a directory structure in windows