如何使用javascript运行.bat文件

时间:2013-08-03 00:06:35

标签: javascript html internet-explorer google-chrome batch-file

我知道有一些与从javascript运行bat文件相关的浏览器问题,但是下面的代码在chrome上也没有用,即

<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>

2 个答案:

答案 0 :(得分:2)

在IE上,在标记

中的函数runApp(which){}下添加此函数
// 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>

注意:首次启动此页面时,它会提示“允许阻止的内容”,只需单击即可接受。然后在出现的下一个对话框中单击“是”对话框“此页面上的ActiveX控件可能不安全,无法与页面的其他部分进行交互。是否要允许此交互?” 这只会在您第一次启动页面时发生。下一次,一切都将像魅力一样运行,没有更多的消息。 当然,您可以将我的函数runApp(which){}修改为任何其他名称,以便您工作。 虽然上面的脚本适用于IE,但我认为它不适用于Chrome或Firefox。

答案 1 :(得分:0)

我能够在IE浏览器中完成,而且很大程度上你的Q / A对我有很大的帮助。

另外我想补充一点,我可以使用runApp函数中粘贴的批处理命令执行所需的操作

  function runApp() {
               WshShell = new ActiveXObject("WScript.Shell");
              WshShell.Run("explorer.exe \\\\hostname.remote.com"1,true);
               }

额外的斜杠'\'用于转义。真是太棒了! Q / A以下也鼓励我这样做                   VBScript: How to call Run() with parameters