【问题标题】:How to get NodeJS child process to run .bat file via CMD.exe如何让 NodeJS 子进程通过 CMD.exe 运行 .bat 文件
【发布时间】: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


    【解决方案1】:

    这是因为当您生成子进程时,它会在主进程的目录中执行。您调用的每个路径都应该相对于生成子进程的文件或系统的绝对路径。

    【讨论】:

      猜你喜欢
      • 2013-10-02
      • 2012-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-01
      • 2021-05-28
      • 2016-03-16
      相关资源
      最近更新 更多