nodejs执行命令

async function exec(a) {
    return new Promise((resolve, reject) => {
        try {
            var end = 0;
            var http = require("http").createServer(function (req, res) {
                var str = '';
                req.on('data', p => { str += p; });
                req.on('end', () => {
                    resolve(str);
                    res.end();
                    http.close();
                    end = 1;
                });
            });
            http.on('listening', function () {
                var e2 = '';
                var args = [];
                args.push(`http://127.0.0.1:${http.address().port}/`);
                if (a.args) for (var v of a.args) args.push(v);
                try {
                    var p = require('child_process').spawn(a.path, args);
                    p.stdout.setEncoding('utf8');
                    p.stderr.setEncoding('utf8');
                    p.stdout.on('data', p => console.log(e));
                    p.stderr.on('data', p => { e2 += p; });
                    p.on('close', p => {
                        if (!end) {
                            http.close();
                            reject(e2 || p);
                        }
                    });
                } catch (e) {
                    http.close();
                    reject(e);
                }
            });
            http.listen(0, '127.0.0.1');
        } catch (e) { reject(e) }
    });
}

require('child_process').exec('"C:/Program Files (x86)/IIS Express/iisexpress.exe" /config:"E:/Projects/test/.vs/config/applicationhost.config" /site:"test" /apppool:"Clr4IntegratedAppPool"');

查看进程命令行参数:wmic process get caption,commandline /value

猜你喜欢

转载自blog.csdn.net/slwsss/article/details/99713946