child_process.exec()标准输出中的行结尾

时间:2016-01-03 08:56:02

标签: node.js wmic line-endings

我正在使用node.js围绕wmic构建我的自定义包装器,我在解析它的输出时遇到了问题。没问题,但我不知道为什么会这样。

我认为行结尾是\r\r\n并决定查看它 这是一段演示代码:

exec('wmic process', {maxBuffer :1000*1024}, function (err, stdout, stderr){
    let location =stdout.indexOf('\n')-6;
    let region =stdout.substr(location, 10);
    console.log(region);

    let buf = new Buffer(stdout);
    let buf2 = new Buffer(30);
    buf.copy(buf2, 0, location, location+30);
    console.log(buf2);
});

我看了region并看到了这个:

enter image description here

出于某种原因,有两个\r而不是一个!

console.log(buf2)的输出也显示了这一点:

<Buffer 6f 75 6e 74 20 20 0d 0d 0a 53 79 73 ...
                          ^^ ^^ ^^

当我决定将输出管道输出到文本文件并查看十六进制编辑器时,我准备按\r\r\n拆分行:

wmic process > wmic.txt

enter image description here

什么?哪两个\r

我有两个问题:

  1. Node从哪里获得第二个\r?我试图找到一些信息,但谷歌对\r\r\n这样的查询很重,this是我能得到的最接近的,我不确定它是否相关

  2. 为什么hex编辑器显示16位编码而Node不显示?我想我应该在exec()选项中指定编码,但我不知道哪一个。 chcp显示了第437个代码页,但我还希望它能够在其他代码页中使用。

0 个答案:

没有答案
相关问题