cmd - 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 。
解决方案
推荐阅读
- c++ - 尝试在 XE 中访问 RAD Studio 10.2 编译库时出现链接错误
- python - 反转集合的元素
- php - 如何使用 Laravel Eloquent 过滤所有和特定字段?
- r - 使用 cross() 对数据框中选定的 col 进行变异
- loops - 如何在 simulink 上构建一个 while 迭代器来更新参数?
- android - 当我打开android studio时,如何摆脱我的MAC上弹出的xcodebuild弹出窗口?
- aem - AEM Slightly - 如何调用名称存储在变量中的 java 方法 - 表达式中的表达式无法正常工作
- java - 从 IBM WebSphere 8.5 迁移到 JBoss EAP 7.0 - SOAP 请求无法解析,'ElementNSImpl 无法转换为 javax.xml.soap.SOAPElement'
- vue.js - 我的 eventBus 实现有什么问题?
- html - 表格单元格的多色边框