首页 > 解决方案 > pipe选项和infile=选项可以同时生效吗?

问题描述

我的操作系统编码为 EUC-CN,我在 Unicode 环境中处理 SAS DMS。我正在尝试编写一个程序来获取我的计算机上某个路径的目录。我的第一个版本的代码是这样的:

%let path = %sysfunc(pathname(sasuser));
x dir "&path." /b/s > "&path.\_dir_.txt" & exit;

data test;
  infile "&path.\_dir_.txt" truncover encoding = 'zeuc';
  input path$1024.;
run;

x del "&path.\_dir_.txt" & exit;

有用。但是我觉得还有更有效更漂亮的方式,所以我重写了。我的第二个版本的代码是这样的:

data test;
  infile "dir ""&path."" /b/s" pipe truncover encoding = 'zeuc';
  input path$1024.;
run;

现在更精彩了,但在语法上是错误的:

ERROR 23-2: option name "encoding" is invalid.

你怎么看?pipe选项和infile=选项可以同时生效吗?


补充:
管道选项实际上是传递命令,也就是dir "&path"。/b/s,到操作系统的终端(CMD for Windows)。但是,CMD 的结果被编码为 ANSI,对我来说,这意味着 EUC-CN。所以我正在阅读 unicode 环境中的 EUC-CN 编码文件,我无法指定编码选项。结果中有很多乱码。

我的实验室信息:
版本:SAS9.04.01M5
机器:SAS-Win10-0029 X64_10PRO


chcp在 CMD 中尝试过选项,但它不起作用:

chcp 65001 & dir "&path" /b/s > D:\_dir_.txt

_dir_.txt仍然编码为 ANSI 。

标签: cmdencodingsaspipe

解决方案


推荐阅读