Java运行多个CMD命令

在Java中,我们可以使用Runtime类来执行操作系统的命令。使用Java执行CMD命令可以做很多事情,比如运行批处理文件、执行系统命令等。本文将介绍如何在Java中运行多个CMD命令,并提供了相应的代码示例。

使用Runtime类执行CMD命令

Java的Runtime类提供了执行系统命令的方法exec()。这个方法可以接收一个字符串参数,该参数表示要执行的命令。下面是一个简单的示例,演示了如何使用Runtime类来执行CMD命令:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class CmdExecutor {
    public static void main(String[] args) {
        try {
            // 创建Runtime对象
            Runtime runtime = Runtime.getRuntime();
            
            // 执行CMD命令
            String command = "dir";
            Process process = runtime.exec(command);
            
            // 获取命令输出
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            
            // 等待命令执行完成
            int exitValue = process.waitFor();
            System.out.println("命令执行完成,退出值:" + exitValue);
            
            // 关闭资源
            reader.close();
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

上述代码中,我们通过Runtime.getRuntime().exec()方法执行了一个CMD命令dir。然后,通过Process对象获取命令的输出,并打印到控制台中。最后,我们使用process.waitFor()等待命令执行完成,并获取命令的退出值。

这是一个简单的示例,只演示了执行一个CMD命令的情况。但在实际应用中,我们可能需要执行多个CMD命令,这就需要考虑命令的顺序和执行结果的处理。

运行多个CMD命令

要在Java中运行多个CMD命令,我们可以使用&符号将多个命令连接在一起,形成一个整体的命令。下面是一个示例,演示了如何在Java中运行多个CMD命令:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class MultiCmdExecutor {
    public static void main(String[] args) {
        try {
            // 创建Runtime对象
            Runtime runtime = Runtime.getRuntime();
            
            // 执行多个CMD命令
            String[] commands = {"dir", "cd C:\\", "dir"};
            for (String command : commands) {
                Process process = runtime.exec(command);
                
                // 获取命令输出
                BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
                String line;
                while ((line = reader.readLine()) != null) {
                    System.out.println(line);
                }
                
                // 等待命令执行完成
                int exitValue = process.waitFor();
                System.out.println("命令执行完成,退出值:" + exitValue);
                
                // 关闭资源
                reader.close();
            }
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

上述代码中,我们使用一个字符串数组存储多个CMD命令,并使用一个循环依次执行这些命令。通过runtime.exec()方法执行命令后,获取命令的输出并打印。最后,使用process.waitFor()等待命令执行完成,并获取命令的退出值。

示例效果和状态图

为了更好地理解运行多个CMD命令的过程,下面是一个示例效果和相应的状态图:

示例命令:

序号 命令
1 dir
2 cd C:\
3 dir

示例效果:

Volume in drive C has no label.
Volume Serial Number is 1234-5678

Directory of C:\

03/21/2022  10:00 AM    <DIR>          .
03/21/2022  10:00 AM    <DIR>          ..
03/21/2022  10:00 AM               123 file1.txt
03/21/2022  10:00 AM               456 file2.txt
               2 File(s)            579 bytes
               2 Dir(s)   1,234,567,890 bytes free

命令执行