我怎样才能在 java 中打开一个隐藏的命令,然后在上面写命令?
How can i open an hidden cmd in java and then write on it commands?
我想做的是在应用程序启动时打开一个新的cmd,然后在不同的时刻在上面写入不同的命令。
示例:我启动我的应用程序,它运行一个隐藏的新命令,因此无法看到,然后它写入 "cd ..",应用程序等待十秒(例如)然后写入 "cd .." 又一次,最后它写入 "dir" 并打印出 'dir' 命令的结果。
我已经尝试使用此代码来做到这一点
public static void main(String[] args) throws IOException{
Runtime rt = Runtime.getRuntime();
Process process = rt.exec("cmd /c cd .. ");
process = rt.exec("cmd /c cd .. ");
process = rt.exec("cmd /c dir");
BufferedReader commReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = "";
while((line = commReader.readLine()) != null){
System.out.println(line);
}
}
但正如我所见,它不起作用,因为它在不同的 cmd 上运行命令。
很抱歉我的英语不好,有人知道如何解决吗?
您正在覆盖您的 process
变量,因此它当然会执行多个 cmd 实例。
你需要做的是打开一个单独的进程,然后将命令写入它的OutputStream
,它连接到子进程的正常输入。
public static void main(String[] args) throws IOException {
ProcessBuilder builder = new ProcessBuilder("cmd");
Process process = builder.start();
OutputStream stdin = process.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin));
writer.write("cd ..\n");
writer.write("dir\n");
writer.flush();
writer.close();
BufferedReader commReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = "";
while((line = commReader.readLine()) != null){
System.out.println(line);
}
}
我想做的是在应用程序启动时打开一个新的cmd,然后在不同的时刻在上面写入不同的命令。 示例:我启动我的应用程序,它运行一个隐藏的新命令,因此无法看到,然后它写入 "cd ..",应用程序等待十秒(例如)然后写入 "cd .." 又一次,最后它写入 "dir" 并打印出 'dir' 命令的结果。 我已经尝试使用此代码来做到这一点
public static void main(String[] args) throws IOException{
Runtime rt = Runtime.getRuntime();
Process process = rt.exec("cmd /c cd .. ");
process = rt.exec("cmd /c cd .. ");
process = rt.exec("cmd /c dir");
BufferedReader commReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = "";
while((line = commReader.readLine()) != null){
System.out.println(line);
}
}
但正如我所见,它不起作用,因为它在不同的 cmd 上运行命令。 很抱歉我的英语不好,有人知道如何解决吗?
您正在覆盖您的 process
变量,因此它当然会执行多个 cmd 实例。
你需要做的是打开一个单独的进程,然后将命令写入它的OutputStream
,它连接到子进程的正常输入。
public static void main(String[] args) throws IOException {
ProcessBuilder builder = new ProcessBuilder("cmd");
Process process = builder.start();
OutputStream stdin = process.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin));
writer.write("cd ..\n");
writer.write("dir\n");
writer.flush();
writer.close();
BufferedReader commReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = "";
while((line = commReader.readLine()) != null){
System.out.println(line);
}
}