问题
I'm attempting to run a simple batch file from my electron application. Here is my code:
globalShortcut.register('Control+B', () => {
log.info('Batch File Triggered: ' + app.getAppPath() + '\\local\\print.bat')
require('child_process').exec(app.getAppPath() + '\\local\\print.bat', function (err, stdout, stderr) {
if (err) {
// Ooops.
// console.log(stderr);
return console.log(err);
}
// Done.
console.log(stdout);
});
})
The batch file should be triggered when Control+B is pressed by the user, but it does not work. The log entry is made, and I've verified the path is correct, but the file is never actually launched.
I found these questions, which ask the same question, but these are 4 years old at this point and none of the answers have worked for me, there is no display, no error, nothing.
- run a windows batch file from node.js
- http://stackoverflow.com/questions/21557461/execute-a-batch-file-from-nodejs
I've also tried the child_process.spawn but that also did nothing noticeable.
var ls = spawn('cmd.exe', ['/c', app.getAppPath() + '\\local\\print.bat']);
How can I launch my batch file from my electron application?
回答1:
I've just discovered such an easy way to do this. You can use the electron shell module, like this:
const {shell} = require('electron');
// Open a local file in the default app
shell.openItem(app.getAppPath() + '\\local\\print.bat');
回答2:
try using the code below
function Process() {
const process = require('child_process');
var ls = process.spawn('script.bat');
ls.stdout.on('data', function (data) {
console.log(data);
});
ls.stderr.on('data', function (data) {
console.log(data);
});
ls.on('close', function (code) {
if (code == 0)
console.log('Stop');
else
console.log('Start');
});
};
Process();
not forgetting to run
npm install child_process
on your terminal
来源:https://stackoverflow.com/questions/49906156/run-batch-file-from-electron-main-thread