node使用exec執行命令中的一些“坑”
阿新 • • 發佈:2018-12-07
日常程式設計中,不得不使用一下系統的命令,在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));
});