执行命令行代码逻辑优化;解决中文乱码问题
This commit is contained in:
		@@ -1,21 +1,44 @@
 | 
			
		||||
// refer: https://www.webhek.com/post/execute-a-command-line-binary-with-node-js/
 | 
			
		||||
var child_process = require('child_process');
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
const path = require('path');
 | 
			
		||||
const child_process = require('child_process');
 | 
			
		||||
const iconv = require("iconv-lite");
 | 
			
		||||
 | 
			
		||||
const encoding = "cp936";
 | 
			
		||||
const bufferEncoding = "binary";
 | 
			
		||||
const DATA_FOLDER = path.join(path.dirname(__dirname), process.env.DATA_FOLDER ?? 'data');
 | 
			
		||||
 | 
			
		||||
var cmds = [
 | 
			
		||||
    'git status',
 | 
			
		||||
    'dir',
 | 
			
		||||
    'git status',
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
cmds.forEach(async function (cmd) {
 | 
			
		||||
    let result = await new Promise(function (resolve) {
 | 
			
		||||
        child_process.exec(cmd, function (error, stdout, stderr) {
 | 
			
		||||
            // 获取命令执行的输出
 | 
			
		||||
            resolve({
 | 
			
		||||
                cmd: cmd,
 | 
			
		||||
                error: error,
 | 
			
		||||
                stdout: stdout,
 | 
			
		||||
                stderr: stderr,
 | 
			
		||||
async function main() {
 | 
			
		||||
    for (let cmd of cmds) {
 | 
			
		||||
        let result = await new Promise(function (resolve) {
 | 
			
		||||
            // refer: https://www.webhek.com/post/execute-a-command-line-binary-with-node-js/
 | 
			
		||||
            child_process.exec(cmd, {
 | 
			
		||||
                cwd: DATA_FOLDER, // 脚本执行目录
 | 
			
		||||
                encoding: bufferEncoding
 | 
			
		||||
            }, function (err, stdout, stderr) {
 | 
			
		||||
                if (err) {
 | 
			
		||||
                    resolve({
 | 
			
		||||
                        cmd: cmd,
 | 
			
		||||
                        err: err,
 | 
			
		||||
                        // err_stack: iconv.decode(Buffer.from(err.stack, bufferEncoding), encoding),
 | 
			
		||||
                        // err_message: iconv.decode(Buffer.from(err.message, bufferEncoding), encoding),
 | 
			
		||||
                    });
 | 
			
		||||
                } else {
 | 
			
		||||
                    // 获取命令执行的输出
 | 
			
		||||
                    resolve({
 | 
			
		||||
                        cmd: cmd,
 | 
			
		||||
                        stdout: iconv.decode(Buffer.from(stdout, bufferEncoding), encoding),
 | 
			
		||||
                        stderr: iconv.decode(Buffer.from(stderr, bufferEncoding), encoding),
 | 
			
		||||
                    });
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    });
 | 
			
		||||
    console.log(result);
 | 
			
		||||
});
 | 
			
		||||
        console.log(result);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
main();
 | 
			
		||||
@@ -2,10 +2,9 @@
 | 
			
		||||
 | 
			
		||||
const request = require('request');
 | 
			
		||||
const fs = require('fs');
 | 
			
		||||
const { dirname } = require('path');
 | 
			
		||||
const path = require('path');
 | 
			
		||||
 | 
			
		||||
const DATA_FOLDER = path.join(dirname(__dirname), process.env.DATA_FOLDER ?? 'data');
 | 
			
		||||
const DATA_FOLDER = path.join(path.dirname(__dirname), process.env.DATA_FOLDER ?? 'data');
 | 
			
		||||
console.log("DATA_FOLDER", DATA_FOLDER);
 | 
			
		||||
 | 
			
		||||
// 请求微博热搜 APi 接口
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user