javascript 如何从child_process获取JSON格式的exec()的任务列表结果?

bkhjykvo  于 2023-01-29  发布在  Java
关注(0)|答案(1)|浏览(162)

当我在child_process上执行tasklist时,stdout以Unicode字符串格式返回进程,我无法轻松查询。
这是我的密码

var exec = require('child_process').exec;
...

exec('tasklist', function(err, stdout, stderr) {
    ...
});

这是标准输出的一部分;

\r\nImage Name                     PID Session Name        Session#    Mem Usage\r\n========================= ======== ================ =========== ============\r\nSystem Idle Process              0 Services                   0          8 K\r\nSystem                           4 Services                   0      3,900 K\r\nRegistry                       148 Services                   0     57,232 K\r\nsmss.exe                       636 Services                   0        444 K\r\ncsrss.exe                      820 Services                   0      3,604 K\r\nwininit.exe                    716 Services                   0      2,824 K\r\nservices.exe                     8 Services                   0      9,180 K\r\nlsass.exe...

我怎样才能得到JSON格式的标准输出?
我尝试了几种方法将Unicode转换为JSON,但找不到简单的方法。

u4vypkhs

u4vypkhs1#

通过将字符串拆分为行来解析字符串,然后将每行进一步拆分为值的数组,然后可以使用该数组构造JSON对象
示例:

var exec = require('child_process').exec;

exec('tasklist', function(err, stdout, stderr) {
    var lines = stdout.split("\n");
    var json = [];

    for (var i = 0; i < lines.length; i++) {
        var line = lines[i].trim();
        if (line === "") continue;
        var values = line.split(/\s+/);
        json.push({
            "imageName": values[0],
            "pid": values[1],
            "sessionName": values[2],
            "sessionNumber": values[3],
            "memUsage": values[4]
        });
    }

    console.log(json);
});

相关问题