我知道有一些与从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>
答案 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