前端代碼調用操作系統命令
對于"需求"這一說,想必大家都又不少話要嘮嗑嘮嗑。各種奇葩需求源源不斷,就差“下海撈月,上天摘星” 了呢。這不! 來了這需求,如下:
需求: 需要通過用戶點擊前端按鈕,執行操作系統指定命令然后再將數據返回到前端界面
直接通過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事件

浙公網安備 33010602011771號