如何从节点js在Windows上执行.bat脚本

时间:2014-11-27 11:53:32

标签: windows node.js batch-file

我有节点js文件,它将执行我的bat文件。我尝试使用节点js子进程模块的exec,但没有运气

让我分享一下我的节点js脚本:

var startTime = '2014-11-27 17:0:42';
var threadName = '<Thread 0>';
var categoryName ='AlarmCategory';
var alarmLevel = 'Fatal';
var alarmCategory = 'OS';
var alarmMessage = 'corrupt';

var cp = require('child_process');
msg = cp.exec('handler.bat' +" " + startTime ,function (error, stdout, stderr) {
    if (error) {
        console.log(error.stack);
        console.log('Error code: '+error.code);
        console.log('Signal received: '+error.signal);
    }
    console.log('Child Process STDOUT: '+stdout);
    console.log('Child Process STDERR: '+stderr);
});

我的蝙蝠脚本。此脚本采用输入参数和回声。

 @echo off
set startTime=%1
set thread=%2
set categoryName=%3
set alarmLevel=%4
set alarmCategory=%5
set alarmMessage=%6
Echo #####################
Echo This tool will help you get the users info
Echo #####################
Echo hi %arg1%

目前我只打印一个arg。

我得到的错误:

"C:\Program Files (x86)\JetBrains\WebStorm 8.0.4\bin\runnerw.exe" "C:\Program Files\nodejs\node.exe" test\test_cmd.js
Error: Command failed: 'handler.bat' is not recognized as an internal or external command,
operable program or batch file.

1 个答案:

答案 0 :(得分:2)

我解决了我的问题。我现在正在使用execFile()函数,因为我还需要传递参数。请务必注意,当您使用execFile()执行命令时,请务必设置&#34; cwd&#34; exeFile()命令中的选项。因为它查找子进程文件并且找不到该文件。直接为.bat文件设置完整路径不起作用。

我确实喜欢这个,

msg = cp.execFile('handler.bat' ,[startTime,threadName] ,{cwd:'/Node Js/baflog/sigma-logger/test'},function (error, stdout, stderr) {
.... ..
...
}