const chproc = require(“child_process”);
const batFilePath = “your_script.bat”;
// chproc.execFile(batFilePath, [1, 2], {cwd:res}, function(error: any, stdout: any, stderr: any) {
// console.log(error);
// console.log(stdout);
// alert(1);
// });
// chproc.execSync(“ipconfig/all”, {encode:“gbk”},function(error: any, stdout: any, stderr: any) {
// if (error) {
// console.error(run error: ${error}
);
// return;
// }
// console.log(stdout: ${stdout}
);
// if (stderr) {
// console.log(stderr: ${stderr}
);
// }
// });
上边的代码就不行,,,没搞懂,感觉是api不支持回调了吗?在typescript中进行的
vscode插件开发
如下可以正常用
const chproc = require(“child_process”);
const workerProcess = chproc.execSync('ipconfig/all');
const d2 = new TextDecoder('gbk'); // 需要指定编码
const xmlContentgbk = d2.decode(workerProcess);
console.log(xmlContentgbk);
这种写法也可以
const exec = require(‘child_process’).exec
// 任何你期望执行的cmd命令,ls都可以
let cmdStr = ‘./你的可执行程序名称 -p 需要输入密码的话’
// 执行cmd命令的目录,如果使用cd xx && 上面的命令,这种将会无法正常退出子进程
let cmdPath = ‘执行cmd命令的路径’
// 子进程名称
let workerProcess
runExec();
function runExec() {
// 执行命令行,如果命令不需要路径,或就是项目根目录,则不需要cwd参数:
workerProcess = exec(cmdStr, {cwd: cmdPath})
// 不受child_process默认的缓冲区大小的使用方法,没参数也要写上{}:workerProcess = exec(cmdStr, {})
// 打印正常的后台可执行程序输出
workerProcess.stdout.on(‘data’, function (data) {
console.log('stdout: ’ + data);
});
// 打印错误的后台可执行程序输出
workerProcess.stderr.on(‘data’, function (data) {
console.log('stderr: ’ + data);
});
// 退出之后的输出
workerProcess.on(‘close’, function (code) {
console.log(‘out code:’ + code);
})
}
编码问题
const d2 = new TextDecoder(‘gbk’); // 需要指定编码
workerProcess = mexec(“ipconfig/all”,{ encoding: ‘gbk’ });//mexec(cmdStr, {cwd: cmdPath})
// 不受child_process默认的缓冲区大小的使用方法,没参数也要写上{}:workerProcess = exec(cmdStr, {})
// 打印正常的后台可执行程序输出
workerProcess.stdout.on('data', function (data: any) {
const xmlContentgbk = d2.decode(data);
console.log(xmlContentgbk);
// console.log('stdout: ' + data);
});
还有这种
var cmd=require('node-cmd');
cmd.get(
'pwd',
function(err, data, stderr){
console.log('the current working dir is : ',data)
}
);
cmd.run('touch example.created.file');
cmd.get(
`
git clone https://github.com/RIAEvangelist/node-cmd.git
cd node-cmd
ls
`,
function(err, data, stderr){
if (!err) {
console.log('the node-cmd cloned dir contains these files :\n\n',data)
} else {
console.log('error', err)
}
}
);