1. 程式人生 > >node使用exec執行命令中的一些“坑”

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

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