JS
建一个html文件,写个例子:
<html>
<head>
<meta charset = "UTF-8">
</head>
<body>
Input Command :<input id = "cmdValue"/></br>
<button onclick = "jsExecuteCmd();">Execute Command</button>
</body>
<script>
/**
*命令参数说明
*cmd.exe /c 是执行完dir命令后关闭命令窗口。
*cmd.exe /k 是执行完dir命令后不关闭命令窗口。
*cmd.exe /c start 会打开一个新窗口后执行dir指令,原窗口会关闭。
*cmd.exe /k start 会打开一个新窗口后执行dir指令,原窗口不会关闭。
*注意:ActiveXObject是IE独有的对象,其他浏览器不兼容
*/
function jsExecuteCmd() {
var cmdValue = document.getElementById("cmdValue").value;
var cmd = new ActiveXObject("WScript.Shell");
cmd.run("cmd.exe /k " + cmdValue);
cmd = null;
}
</script>
</html>
执行效果:
(代码中用到了ActiveXObject对象,该对象是IE独有,其他浏览器不兼容)
java
package com.yoyo.yotils.yoyo.command;
import java.io.IOException;
import java.io.InputStream;
/**
* 子逻辑
* @author yoyo
* @version $Id: JavaExecuteCmd.java, v 0.1 2019年11月18日 20:00 yoyo Exp $
*/
class JavaExecuteCmd {
static void exeCmd(String command) {
try {
Process exec = Runtime.getRuntime().exec(command);
InputStream in = exec.getInputStream();
while (in.read() != -1) {
System.out.println(in.read());
}
in.close();
//exec.waitFor();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* cmd命令模式
*/
enum ExecuteType {
CLOSE_CLIENT ("cmd /c ", "执行完dir命令后关闭命令窗口"),
NOT_CLOSE_CLIENT("cmd /k ", "执行完dir命令后不关闭命令窗口"),
CLOSE_CLIENT_NEW("cmd /c start ", "会打开一个新窗口后执行dir指令,原窗口会关闭"),
NOT_CLOSE_CLIENT_NEW("cmd /k start ", "会打开一个新窗口后执行dir指令,原窗口不会关闭");
/**
* 命令模式
*/
private String command;
/**
* 命令模式解释
*/
private String desc;
ExecuteType(String command, String desc) {
this.command = command;
this.desc = desc;
}
/**
* Getter method for property <tt>command</tt>.
*
* @return property value of command
*/
public String getCommand() {
return command;
}
/**
* Setter method for property <tt>command</tt>.
*
* @param command value to be assigned to property command
*/
public void setCommand(String command) {
this.command = command;
}
/**
* Getter method for property <tt>desc</tt>.
*
* @return property value of desc
*/
public String getDesc() {
return desc;
}
/**
* Setter method for property <tt>desc</tt>.
*
* @param desc value to be assigned to property desc
*/
public void setDesc(String desc) {
this.desc = desc;
}}
public static void main(String[] args) {
String cmd1 = "dir";
String cmd2 = "mvn package -Dmaven.skip.test=true";
String cmd3 = "java -version";
exeCmd(ExecuteType.CLOSE_CLIENT_NEW.getCommand() + cmd2);
}
}
执行效果:
(执行打jar包测试,失败的原因是因为路径不对,把该文件放到项目根目录下执行即可成功,此处只验证cmd是否执行)