SAS:一次解压缩多个.dat文件

时间:2013-12-06 22:46:39

标签: zip sas

我想使用SAS解压缩包含.dat文件的文件。我有超过100个文件要解压缩,因此我想用SAS自动完成。我试过使用以下内容:

FILENAME ZIPFILE SASZIPAM 'Z:\folder\file'; 
DATA newdata; 
INFILE ZIPFILE(file.dat) dsd DLM='|'; 
INPUT var1 var2 var$;
RUN;

这不起作用。使用ZIPFILE SASCIPAM解压缩.dat文件时是否有问题?我有SAS 9.3。

有更好的选择吗?

3 个答案:

答案 0 :(得分:0)

我从未将SASZIPAM视为文件引用类型。

我会这样做:

filename zipfile ZIP 'Z:\folder\file.zip';
DATA newdata; 
INFILE ZIPFILE(file.dat) dsd DLM='|'; 
INPUT var1 var2 var$;
RUN;  

我可能在文档中遗漏了那种类型。你能粘贴你在日志中得到的错误吗?

答案 1 :(得分:0)

我猜你可以使用宏来做它,但它可能会有点乱。 SAS多年来一直提供X命令来联系命令提示符。此方法要求您下载了一个免费的文件存档/解压缩程序(例如7-Zip,WinRAR等)。

我喜欢使用7-Zip的命令行版本。我使用32位计算机,因此您可能必须使用不同的.exe文件。

解压缩目录中多个文件的语法:

data _null_;
    X "cd (7-Zip_installed_location)"; <=== File that contains the 7za.exe
    X "7za e (zip_files_location)*.zip -o(output_destination)";
run;

例如,我在名为“Compressed”的文件夹中有一些zip文件:

data _null_;
    X "cd C:\7-Zip Comm";
    X "7za e C:\sasdata\Compressed\*.zip -oC:\sasdata\New";
run;

e代表“摘录”。

*对所有人都意味着。

-o代表“输出”。

答案 2 :(得分:0)

在Windows 7(SAS 9.3)上提取.z文件时,每个路径的双引号将解决任何问题:( FYI - 第二个语句在一行中)

data _null_;
x '"C:\Program Files\7-Zip\7z.exe" x "E:\sas\config\Lev1\SASApp\Data\*.Z" -o"E:\sas\config\Lev1\SASApp\Data"'; 
run;

此致 Bhavin