Run a bat file from javascript

41,340

Solution 1

First, JavaScript doesn't have any operating system services. So you are really referring to a Windows Script Host (WSH) script that happens to be written in JavaScript.

Second, start is not an executable but rather a command that is built into cmd.exe.

With the confusion out of the way, it sounds like you want to execute a shell script (batch file) from a WSH script. The simplest way is like this (this is somewhat close to what you tried already):

var wshShell = new ActiveXObject("WScript.Shell");
wshShell.Run("D:\\dir\\user.bat");

To create the WshShell COM object reference (progid WScript.Shell), use the new keyword and the ActiveXObject constructor. Also, you need to double your backslashes (\) in JavaScript strings because \ escapes characters in JavaScript strings.

Solution 2

Also, check the following version it might help;

var runnableScript = exec('path_to.bat',
    (error, stdout, stderr) => {
        console.log(stdout);
        console.log(stderr);
        if (error !== null) {
            console.log(`exec error: ${error}`);
        }
    });
Share:
41,340
morha13
Author by

morha13

Apparently, this user prefers to keep an air of mystery about them.

Updated on July 18, 2022

Comments

  • morha13
    morha13 almost 2 years

    I'm trying to run a bat file using javascript. I've tried using powershell but it didn't seem to work properly. Here is the code I tried:

    var oShell = WScript.CreateObject("WScript.Shell");
    oShell.Exec("D:");
    oShell.Exec("cd dir");
    oShell.Exec("start user.bat");
    

    I've also tried that:

    var oShell = WScript.CreateObject("WScript.Shell");
    oShell.Exec("start D:\dir\user.bat");
    

    Sometimes it runs, sometimes I get those errors "Expected hexadecimal digit", "Access is denied". I'm really confused. All I'm trying to do is execute a bat file from a javascript file.

    Anyone has any idea how to do it? Thank you!