前端代码调用操作系统命令

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

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

直接通过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事件

posted @ 2021-02-27 00:20  zeotoone  阅读(2482)  评论(0编辑  收藏  举报