How to run a .bat file using javascript

27,206

On IE, add this function under your function runApp(which){} in the tag

// A fucntion to run any cmd command
function runApp(which) {
    // Using Windows Script Host Shell ActiveX to run cmd commands
    WshShell = new ActiveXObject("WScript.Shell");
    WshShell.Run("cmd /c " + which);
}
// A function to set the Optimal Internet Options
function setOptimalInternetOptionsForDevelopers() {
    // 1- Settings: Don't show the Dialog box "An ActiveX control on this page might be unsafe to interact
    // with other parts of the page. Do you want to allow this interaction?"
    // Refer to http://stackoverflow.com/questions/894369/an-activex-control-on-this-page-might-be-unsafe
    var registryKey = '"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Zones\\0"';
    // 1201 Value means: Initialize and script ActiveX controls not marked as safe
    // Refer to http://support.microsoft.com/kb/833633
    var regValName = "1201";
    // Value of 1 will show the Dialog box (Default Value)
    // Value of 0 will not show that dialog box (we need to set this value)
    var regValue = "0";
    runApp('reg add ' + registryKey + ' /v ' + regValName + ' /t REG_DWORD /d ' + regValue + ' /f');

    // 2- Internet Options => Advanced tab => Check "Allow active content to run in files on My Computer*
    // Default (1) not checked
    // we need to change it to (0) to allow this option
    // Refer to http://support.microsoft.com/kb/2002093
    registryKey = '"HKCU\\Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_LOCALMACHINE_LOCKDOWN"';
    regValName = "iexplore.exe";
    regValue = "0";
    runApp('reg add ' + registryKey + ' /v ' + regValName + ' /t REG_DWORD /d ' + regValue + ' /f');
}
Now, all you have to do is launch it in the <body> section before any script is needed to be triggered.
For Example:
<body>
    <script type="text/javascript">
        setOptimalInternetOptionsForDevelopers();
        // the rest of the content
    </script>
</body>

Note: The first time you launch this page, it will prompt a message to "Allow blocked content", just click on it to accept it. Then click "yes" on the next dialog box that appears Dialog box "An ActiveX control on this page might be unsafe to interact with other parts of the page. Do you want to allow this interaction?" This will happen only the first time you launch the page. Next time, everything will run like a charm with no more messages. Of course you can modify my function runApp(which) {} to any other name for you to work. Although the above script will work for IE, I don't think it'll work for Chrome or Firefox.

Share:
27,206
user2205925
Author by

user2205925

Updated on July 25, 2022

Comments

  • user2205925
    user2205925 almost 2 years

    I know there are some browser issues associated with running a bat file from javascript, but the below code doesnt work on chrome nor on ie

    <html>
    <head>
    <script type="text/javascript">
    function runApp(which) {
      WshShell = new ActiveXObject("WScript.Shell");
      WshShell.Run (which,1,true);
    }
    </script>
    </head>
    <body>
    <!-- Two ways to create a link to run the app. -->
    <font onClick="runApp('file:C:/path/to/batfile.bat');" style="cursor: hand;"><u>Notepad</u>  </font>
    <br>
    <!-- Or use <a> descriptor -->
    <a href="runApp('file://c:/test.bat');">Batch File</a>
    </body>
    </html>