关于js中调用bat文件的问题,求指教

UPC子夜 2012-11-02 10:56:54
我想在js中调用一个bat文件去清理IE的缓存,下边是代码:

var wsh = new ActiveXObject("WScript.Shell");
var batName = "清除IE缓存.bat";
//获取当前文件的相对路径
var pathName =window.location.pathname.replace("Test.jsp","");
var batPath = pathName+batName;
//执行bat文件
A行 var result = wsh.run(batPath);
B行 //var result = wsh.run("E:/workspace/portal_local/TEST/清除IE缓存.bat");

执行A行的时候,用的是相对路径,一直提示系统找不到指定的文件
换成B行,用绝对路径就可以

大侠帮忙看看怎么解决啊 是不是run只能接受绝对路径啊,有没有可以用相对路径的方法?
或者是能取到当前项目的绝对路径也可以
谢谢了
...全文
1193 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Flytion 2013-01-05
  • 打赏
  • 举报
回复
引用 13 楼 Giberson1 的回复:
引用 12 楼 UPC05070000 的回复:引用 11 楼 licip 的回复:你这个清理是需要.bat文件的,如果你的客户端没有.bat那不是清理不了呀。 文件是放在服务端的啊 应该也可以调用吧 我给楼主解释下,流程是这样的,服务器发布的网页,会缓存在客户端电脑上, ,而js读取的是html的物理地址,也就是说,他是相对于客户端来说。 所有你服务器上……
我想问一下,除了这种js,有没有别的方法可以执行客户端的bat。因为我要设置可信站点,所以上面说的那种方法不能使用。
Giberson1 2012-11-24
  • 打赏
  • 举报
回复
引用 12 楼 UPC05070000 的回复:
引用 11 楼 licip 的回复:你这个清理是需要.bat文件的,如果你的客户端没有.bat那不是清理不了呀。 文件是放在服务端的啊 应该也可以调用吧
我给楼主解释下,流程是这样的,服务器发布的网页,会缓存在客户端电脑上, ,而js读取的是html的物理地址,也就是说,他是相对于客户端来说。 所有你服务器上发布一个带js的html网页,从 理论上来说,是可以操作客户端电脑的。 这也就是,为什么一般的浏览器都会设置js的访问本地的权限。就是为了防止这种潜在威胁情况发生。
UPC子夜 2012-11-23
  • 打赏
  • 举报
回复
引用 11 楼 licip 的回复:
你这个清理是需要.bat文件的,如果你的客户端没有.bat那不是清理不了呀。
文件是放在服务端的啊 应该也可以调用吧
licip 2012-11-23
  • 打赏
  • 举报
回复
你这个清理是需要.bat文件的,如果你的客户端没有.bat那不是清理不了呀。
Giberson1 2012-11-23
  • 打赏
  • 举报
回复
我帮你改了一下,可以执行相对路径了。



说明如下:

我的html和bat文件,都放在c盘根目录,下面文件为1.html,内如如下:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> New Document </title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
<script type="text/javascript">
<!--
function run(){
var wsh = new ActiveXObject("WScript.Shell");
var batName = "a.bat";
// 获取当前文件的相对路径
//var pathName =window.location.pathname.replace("Test.jsp","");
//var batPath = pathName+batName;
var pathName = window.location;
alert("当前文件路径:"+pathName);
var fileName = pathName.toString().split("/")[pathName.toString().split("/").length-1];
alert("当前文件名:"+fileName);
var targetFile ="a.bat";
pathName = pathName.toString().replace(fileName,targetFile);
alert(pathName);
// 方式一:相对途径
var result = wsh.run(pathName);
// 方式二:绝对途径
//var result = wsh.run("c:/a.bat");
}
//-->
</script>
</head>
<body>
<input type="button" value="按钮" onclick="run()"/>
</body>
</html>


下面是a.bat的内容:


mspaint


运行截图如下:
截图一:

截图二:

截图三:

截图四:

最后一张截图:


UPC子夜 2012-11-23
  • 打赏
  • 举报
回复
引用 8 楼 wbb123yu 的回复:
引用 7 楼 UPC05070000 的回复:引用 6 楼 wbb123yu 的回复:引用 5 楼 UPC05070000 的回复:引用 4 楼 wbb123yu 的回复:- -楼主你是做流氓广告的么 什么意思?什么广告啊?。。。。弹对话框还不让关闭 不是流氓广告么 不是 是想做一个考试系统 一开考就最大化的那种 防止考生不小心给关掉额 那种啊我们学校以前都用的客……
用cs做是可以的 但是想用bs实现 弹框的话 点确定以后页面还是给关了吧 现在想要的效果是 点关闭时给个提示 如果确实是点错了 就不给关了 现在的模式是 给了提示后 不管怎么样 都给关了 这样不好
wbb123yu 2012-11-22
  • 打赏
  • 举报
回复
引用 7 楼 UPC05070000 的回复:
引用 6 楼 wbb123yu 的回复:引用 5 楼 UPC05070000 的回复:引用 4 楼 wbb123yu 的回复:- -楼主你是做流氓广告的么 什么意思?什么广告啊?。。。。弹对话框还不让关闭 不是流氓广告么 不是 是想做一个考试系统 一开考就最大化的那种 防止考生不小心给关掉
额 那种啊我们学校以前都用的客户端啊 WEB要无法关闭是不可能的吧 顶多弹个对话框
UPC子夜 2012-11-22
  • 打赏
  • 举报
回复
引用 6 楼 wbb123yu 的回复:
引用 5 楼 UPC05070000 的回复:引用 4 楼 wbb123yu 的回复:- -楼主你是做流氓广告的么 什么意思?什么广告啊?。。。。弹对话框还不让关闭 不是流氓广告么
不是 是想做一个考试系统 一开考就最大化的那种 防止考生不小心给关掉
wbb123yu 2012-11-16
  • 打赏
  • 举报
回复
引用 5 楼 UPC05070000 的回复:
引用 4 楼 wbb123yu 的回复:- -楼主你是做流氓广告的么 什么意思?什么广告啊?
。。。。弹对话框还不让关闭 不是流氓广告么
UPC子夜 2012-11-15
  • 打赏
  • 举报
回复
引用 4 楼 wbb123yu 的回复:
- -楼主你是做流氓广告的么
什么意思?什么广告啊?
wbb123yu 2012-11-13
  • 打赏
  • 举报
回复
- -楼主你是做流氓广告的么
UPC子夜 2012-11-13
  • 打赏
  • 举报
回复
再追加一个问题,javascript中用window.showmodaldialog打开的对话框,有个关闭按钮,怎么能不显示这个按钮啊,或者把这个按钮禁用掉,谢谢。
我意纵横 2012-11-04
  • 打赏
  • 举报
回复
我想应该是你的bat文件没有映射到服务器下面去,才使得你的文件无法找到,而你用B那个的话,它调用的并不是映射在服务器下的bat文件,而是源文件,当然可以找到.

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧