前端代码调用操作系统命令
对于"需求"这一说,想必大家都又不少话要唠嗑唠嗑。各种奇葩需求源源不断,就差“下海捞月,上天摘星” 了呢。这不! 来了这需求,如下:
需求: 需要通过用户点击前端按钮,执行操作系统指定命令然后再将数据返回到前端界面
直接通过JS代码执行
通过ActiveXObject对象实现对操作系统本地命令的操作。 代码如下
<html>
<head>
</head>
<body>
<div>
<button onclick="exec()">执行命令</button>
<p id="jg"></p>
<br />
<p id="nr"></p>
</div>
<script type="text/javascript">
function exec(){
var path = "C:\\Users\\Administrator\\Desktop\\a.txt";
var cmd = new ActiveXObject("WScript.Shell");
var cmdStr = "cmd /c adb devices| findstr device$>"+path;
//var cmdStr = "cmd /c dir /?>"+path;
//第一个参数是你要执行的程序的路径
//第二个程序是窗口的形式,0后台 1正常 2激活并最小化 3激活并且最大化.共有10个参数
//第三个参数是表示脚本是等待还是继续执行,为true,脚本就会等待调用的程序退出后再向后执行
var res=cmd.run(cmdStr,0,true);
// 执行正确则返回0 否则返回1
document.getElementById("jg").innerHTML ="执行结果为:"+res;
var fso = new ActiveXObject("Scripting.FileSystemObject");
var content = '';
if(fso.FileExists(path)){
// 第二个参数为访问模式1为只读、2写入、8为追加
// 第三个参数指定如文件不存在则创建
var file = fso.OpenTextFile(path,1,false);
//atendofstream属性:当处于文件结尾的时候这个属性返回true.一般用循环检测是否到达文件末尾
while (!file.atendofstream){
// 按行读取
//content += file.readLine()+"\n";
content = file.readAll();
}
file.close();
}
if(content==null || content==""){
document.getElementById("nr").innerHTML ="内容为:<br/>"+content;
window.alert("设备未连接");
}else{
content = content.replace(/\n/g,"<br>");
document.getElementById("nr").innerHTML ="内容为:<br/>"+content;
}
fso=null;
cmd=null;
}
</script>
</body>
</html>
使用VBS代码结合JS执行
通过 VBScript 脚本且内嵌在 HTML 中执行命令
<html>
<head>
</head>
<body>
<div>
<button name="Button1">执行命令</button>
<p id="jg"></p>
<br />
<p id="nr"></p>
</div>
<script type="text/vbscript">
' 不支持IE11以上
Sub Button1_onClick()
Dim path,objShell,fs,ts,s
path="C:\\Users\\Administrator\\Desktop\\a.txt"
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "cmd /c adb devices|findstr device$>"&path,0,true
Set fs= Createobject("Scripting.filesystemobject")
If(fs.FileExists(path)) Then
set ts = fs.OpenTextFile(path,1,false)
Do While ts.atendofstream<>true
s=ts.readall
Loop
' MsgBox "000000"&s
exec(s)
Else
MsgBox "执行失败!&res"
End If
End Sub
</script>
<script type="text/javascript">
function exec(s){
document.getElementById("jg").innerHTML ="执行结果为:";
if(s==null || s==""){
window.alert("设备未连接");
}else{
s = s.replace(/\n/g,"<br>");
document.getElementById("nr").innerHTML ="内容为:<br/>"+s;
}
}
</script>
</body>
</html>
注意:以上代码只能在IE浏览器执行
参考:
VBS常用经典代码
VBS的HTML事件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了