我找不到任何地方能说明什么可以解释在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

10-08 14:57