【发布时间】:2020-08-03 15:23:56
【问题描述】:
我目前正在使用 ElectronJS 和 Javascript 为 Windows 编写一个应用程序启动器。我想阻止一个应用程序打开的多个实例。 为此,我编写了一个批处理脚本来检查进程是否正在运行,如果是,则打印出一条消息“程序正在运行”,如果不是,则打印“程序未运行”。
批处理脚本
echo off
tasklist /FI "IMAGENAME eq chrome.exe" 2>NUL | find /I /N "chrome.exe">NUL
if "%ERRORLEVEL%"=="0" echo Program is running
if "%ERRORLEVEL%"=="1" echo Program is not running
当我通过 cmd.exe 运行它时,无论应用程序是否正在运行,它都会给我正确的输出。然而,在 Javascript 中,我总是得到以下信息:
输出
错误:查找:'/I':没有这样的文件或目录 find: ‘/N’: 没有这样的文件或目录
错误:查找:“chrome.exe”:没有这样的文件或目录
程序没有运行
孩子以代码 0 退出
renderer.js
const { spawn } = require('child_process');
const bat = spawn('cmd.exe', ["/c", 'multiScript.bat']);
bat.stdout.on('data', (data) => {
console.log(data.toString());
});
bat.stderr.on('data', (data) => {
console.error(data.toString());
});
bat.on('exit', (code) => {
console.log(Child exited with code ${code});
});
文件夹结构
projectfolder/
|-src/
| |-renderer.js (File that is trying to spawn the batch file)
| |-multiScript.bat (The bat file I am trying to execute)
【问题讨论】:
标签: javascript node.js windows batch-file electron