前端代码调用本地系统命令

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

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

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

原文地址:https://www.cnblogs.com/zeo-to-one/p/10394170.html