zoukankan      html  css  js  c++  java
  • 前端代码调用本地系统命令

    对于"需求"这一说,想必大家都又不少话要唠嗑唠嗑。各种奇葩需求源源不断,就差“下海捞月,上天摘星” 了呢。这不! 来了这需求,如下:

    需求: 需要通过用户点击前端按钮,执行指定系统命令然后将数据返回到前端界面

    直接通过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()+"
    ";
    					content = file.readAll();
    				}
    				file.close();
    			}
    
    			if(content==null || content==""){
    				document.getElementById("nr").innerHTML ="内容为:<br/>"+content;
    				window.alert("设备未连接");
    			}else{
    				content = content.replace(/
    /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(/
    /g,"<br>");
    				document.getElementById("nr").innerHTML ="内容为:<br/>"+s;
    			}
    		}
    	</script>
    
    </body>
    </html>
    

    注意:以上代码只能在IE浏览器执行
    参考:
    VBS常用经典代码
    VBS的HTML事件

  • 相关阅读:
    mysql删选某列重复值
    apache伪静态
    nginx的伪静态
    如何对数据库进行优化
    ci的优缺点
    memcache状态说明
    sql中扩展插入语法
    若给个 个人收款的二维码,如何测试?
    安装自动化测试工具selenium
    PHP 线上项目 无法操作
  • 原文地址:https://www.cnblogs.com/zeo-to-one/p/10394170.html
Copyright © 2011-2022 走看看