node使用exec执行命令中的一些“坑”

版权声明:本文为博主原创文章,欢迎大家交流 https://blog.csdn.net/he_min/article/details/82912729

日常编程中,不得不使用一下系统的命令,在node中可以使用子进程的exec实现:

let cp = require('child_process');

在开发过程中,遇到几个小问题,总结一下:

  • 1.命令中不能有空格
    有些命令,是通过函数返回的,其中包含一些空格,但在执行的时候exec会把命令从空格处截断,导致命令不完整,对于这个问题可以这样做:
cp.exec('\"'+ePath+ '\"')

人为的给命令添加一个双引号,让他认为这是一个完整的命令。

  • 2返回结果有中文的问题
    执行的有很多都有中文,在不做处理的情况下会因为命令窗与程序的编码不一致而出现乱码,这个问题的解决方法如下:
const iconv = require('iconv-lite');
let regedit = require('regedit');
let cp = require('child_process');
var binaryEncoding = 'binary'; 
var encoding = 'cp936';
cp.exec('\"'+ePath+ '\"', { encoding: binaryEncoding }, function(err, stdout, stderr){
      console.log(iconv.decode(new Buffer(stdout, binaryEncoding), encoding), "error"+iconv.decode(new Buffer(stderr, binaryEncoding), encoding));
});

猜你喜欢

转载自blog.csdn.net/he_min/article/details/82912729
今日推荐