日常编程中,不得不使用一下系统的命令,在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));
});