如何使用NodeJS将参数从exec方法传递到批处理文件

时间:2018-10-07 14:00:29

标签: node.js

我正在nodejs中创建一个子进程,它将在该子进程中编译并执行Java代码。下面是代码

const exec = require('child_process').exec;  
    exec('C:/Development/vilearn/vilearn_node/src/my.bat', (err, stdout, stderr) => {  
      if (err) {  
        console.error(err);  
        return;  
      }  
      console.log(stdout);  
    });  

如何将参数从exec方法传递到批处理文件。 下面是我的批处理文件。

set path=C:\Program Files\Java\jdk1.8.0_111\bin
cd C:\Development\vilearn\vilearn_node\src
pwd
javac Hello.java
java Hello

从上面的代码中可以看到,我正在使用此批处理文件来编译Java代码。在这里,我想通过exec方法传递java文件所在的路径以及java文件的名称,以使其动态化。

请指导我

感谢帮助!

2 个答案:

答案 0 :(得分:0)

使用“%*”选择所有参数,或使用“%1”,“%2”,...选择特定参数

并使用“ spawn”加载批处理,然后将参数作为字符串数组传递给第二个参数

答案 1 :(得分:0)

您可以像这样通过nodejs脚本传递参数,

| Name     | Name     |  PetID   |
-----------------------------------
| John     | Snuffles | AC001-01 |
| John     | Puffles  | AC001-02 |

在您的bat文件中,

const exec = require('child_process').exec;
const param1 = 'Hello.java';
const param2 = 'Hello';

exec(`"C:/Development/vilearn/vilearn_node/src/my.bat" "${param1}" "${param2}"`, (err, stdout, stderr) => {
    if (err) {
        console.error(err);
        return;
    }
    console.log(stdout);
});
  

在参数上使用双引号,以避免从空间分裂为2个参数