我找不到任何地方能说明什么可以解释在String[] cmdarray
方法的Process exec(String[] cmdarray)
内部存储的内容。我找到了一些地方cmdarray
来存储数组命令或文件和远程服务器名称的位置。所以我想知道我们到底可以在String[] cmdarray
中存储什么?
最佳答案
数组的第一个元素是命令,例如cmd
。其他是争论。例如:
try {
Process p = Runtime.getRuntime().exec(new String[] {"cmd", "/c", "echo", "This", "is", "an", "argument"});
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String s;
while((s = reader.readLine()) != null) {
System.out.println(s);
}
} catch (IOException e) {
e.printStackTrace();
}
此处
"/c"
,"echo"
,"This"
,"is"
,"an"
和"argument"
都是命令cmd
的参数。输出为:This is an argument
如果要运行多个命令,则必须使用双“&”号来指示另一个命令正在启动:
try {
Process p = Runtime.getRuntime().exec(new String[] { "cmd", "/c", "echo", "This", "is", "an", "argument",
"&&", "echo", "this", "command", "snuck", "in" });
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String s;
while ((s = reader.readLine()) != null) {
System.out.println(s);
}
} catch (IOException e) {
e.printStackTrace();
}
在这里,每个命令都被发送到
cmd
。我不是很肯定,但是我相信您必须启动一个新的过程才能将命令发送到其他地方。输出为:This is an argument
this command snuck in
阅读此以获取更多信息:https://stackoverflow.com/a/18867097/5645656