我正在写一个页面,一旦保存到本地计算机,它可以运行cmd做一个tracert,ping和其他东西用于网络诊断只有页面适用于大多数页面但我无法弄清楚如何关闭cmd窗口后保存结果到一个文件?
它只适用于IE。
运行tracert>保存到文件>文件被拉到textarea>通过电子邮件发送
我希望系统把它放在弹出窗口中。 我试过了:
WshShell.close()
WshShell.Quit
WScript.close
WScript.Quit
<script type="text/javascript" language="javascript">
function RunFile3() {
var domain = document.getElementById("domain").value;
WshShell = new ActiveXObject("WScript.Shell");
WshShell.Run("c:/windows/system32/cmd.exe /k tracert " + domain + " > C:/xampp/htdocs/tracert/trace.txt", 1, false);
}
</script>
</head>
<body>
<input type="text" id="domain">
!---<input type="button" value="Run Ping" onclick="RunFile2();"/>--->
<input type="button" value="Run Tracert" onclick="RunFile3();"/>
<br>
<textarea rows="30" cols="60" id="results">
</textarea>
您可以通过WMI跟踪命令窗口,然后终止该进程。像这样:
function closeCMD () {
var wmiLocator = new ActiveXObject('WbemScripting.SWbemLocator'),
wmiService = wmiLocator.ConnectServer('.', 'root\\CIMV2'),
cmdWindows = new Enumerator(wmiService.ExecQuery("Select * from Win32_Process Where name = 'cmd.exe'"));
while (!cmdWindows.atEnd()) {
if (cmdWindows.item().CommandLine.indexOf('trace.txt') > -1) { // *
cmdWindows.item().Terminate(0);
}
cmdWindows.moveNext();
}
return;
}
* = trace.txt
,或原始命令行调用的任何内容(传递给Run
的第一个参数中传递给cmd.exe的字符串的参数部分),它唯一标识要关闭的特定cmd窗口。
如果要关闭所有cmd窗口,可以从循环中删除条件,然后执行cmdWindows.item().Terminate(0);
。
重要!
在调用该函数之前,您必须将cmd调用设置为synchronous,这样您才能在完成其工作之前关闭该窗口。这可以通过将Run
的第三个参数更改为true
(即您目前作为false
传递的参数)来实现。
您还可以轻松地更改函数更通用,只需将进程名称和标识符作为参数传递,并使用process参数构建WMI查询字符串,并将indentifier参数传递给indexOf
。