nodejs调用cmd命令

使用 child_process.exec 实现

child_process即子进程可以创建一个系统子进程并执行shell命令,在与系统层面的交互上非常有用

NodeJS子进程提供了与系统交互的重要接口,其主要API有: 标准输入、标准输出及标准错误输出的接口

NodeJS 子进程提供了与系统交互的重要接口,其主要 API 有:

标准输入、标准输出及标准错误输出的接口
  获取标准输入 child.stdin
  获取标准输出 child.stdout 
  获取标准错误输出 child.stderr 
获取子进程的PID:child.pid
提供生成子进程的重要方法:child_process.spawn(cmd, args=[], [options])
提供直接执行系统命令的重要方法:child_process.exec(cmd, [options], callback)
提供杀死进程的方法:child.kill(signal='SIGTERM')

使用child_process模块的步骤:

  1.调用系统命令行

  2.打开第三方软件

  3.打开第三方软件并实现通信

示例:

  调用命令行ipconfig获取系统相关IP信息

(1)使用exec 

"use strict";

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

module.exports = function myTest() {

    return new Promise(function(resolve, reject) {

        var cmd = "ipconfig";
        exec(cmd,{
            maxBuffer: 1024 * 2000
        }, function(err, stdout, stderr) {
            if (err) {
                console.log(err);
                reject(err);
            } else if (stderr.lenght > 0) {
                reject(new Error(stderr.toString()));
            } else {
                console.log(stdout);
                resolve();
            }
        });
    });
};

(2)使用spawn

var spawn = require("child_process").spawn;
module.exports = function myTest() {
    return new Promise(function(resolve, reject) {
        var cmd = "ipconfig";
        var result = spawn('cmd.exe', ['/s', '/c', 'ipconfig']);
        result.on('close', function(code) {
            console.log('child process exited with code :' + code);
        });
        result.stdout.on('data', function(data) {
            console.log('stdout: ' + data);
        });
        result.stderr.on('data', function(data) {
            console.log('stderr: ' + data);
            reject(new Error(stderr.toString()));
        });
        resolve();

    });
};

说明:

   exec是在执行完成后返回一个完整的buffer,通过返回的buffer去识别完成状态

  spawn在执行时会返回一个stdout和stderr流对象,为边执行边返回。在执行完成后会抛出close事件监听,并返回状态码,通过状态码可以知道子进程是否顺利执行

  

猜你喜欢

转载自www.cnblogs.com/baby123/p/12067643.html