从Electron主线程运行批处理文件

Gru*_*ica 1 javascript batch-file electron

我正在尝试从我的电子应用程序运行一个简单的批处理文件。这是我的代码:

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);
    });
})
Run Code Online (Sandbox Code Playgroud)

当用户按下Control + B时​​,应该触发该批处理文件,但是它不起作用。进行了日志输入,并且我已经验证了路径正确,但是该文件从未真正启动过。

我发现了这些问题,都提出了相同的问题,但是这些问题已经有4年历史了,对我而言,所有答案都没有用,没有显示,没有错误,没什么。

我也尝试过child_process.spawn,但是也没什么明显的作用。

var ls = spawn('cmd.exe', ['/c', app.getAppPath() + '\\local\\print.bat']);
Run Code Online (Sandbox Code Playgroud)

如何从电子应用程序启动批处理文件?

Gru*_*ica 7

我刚刚发现了这样做的简单方法。您可以使用电子外壳模块,如下所示:

const {shell} = require('electron');
// Open a local file in the default app
shell.openItem(app.getAppPath() + '\\local\\print.bat');
Run Code Online (Sandbox Code Playgroud)