5

我正在寻找一段代码,最好是独立于操作系统和基于宏的,用于删除文本文件(或任何文件)

4

2 回答 2

10

来自 SAS 文档:

data _null_;
    fname="tempfile";
    rc=filename(fname,"physical-filename");
    if rc = 0 and fexist(fname) then
       rc=fdelete(fname);
    rc=filename(fname);
run;

它本质上是独立于操作系统的,因为它可以在多个操作系统上工作。您永远不可能拥有真正的独立性,因为 fileref 将依赖于操作系统,但是如果您将其指定为参数,它应该不是问题。

作为宏,您将在 SYSFUNC 块中使用 FDELETE:

%put %sysfunc(fdelete(myfile));

但是,myfile 需要是一个文件引用,因此如果您仅使用文件的实际物理位置作为参数,则需要两个步骤:

%macro file_Delete(file);
filename __a "&file.";
%put %sysfunc(fdelete(__a));
%mend file_delete;
于 2012-11-15T14:48:45.897 回答
2

我更进一步如下:

%macro fdel(file);
  %let rc= %sysfunc(filename(fref,&file));
  %let rc= %sysfunc(fdelete(&fref));
%mend;

这使它更加通用。谢谢乔!

于 2012-11-15T15:07:44.343 回答