java - 如何在java中运行依赖的cmd命令

标签 java cmd

嗨,我需要在 java 中执行多个相互依赖的 cmd 命令:

cd  "C:\Program Files (x86)\puTTY"
pscp   -pw pwd F:\Test\file_to_send.txt login@my_ip:/home/bin

我尝试过这样的方法:

1)

Runtime.getRuntime().exec("cmd/c start F:\\Test\\move_to_linux.bat"); 并在bat文件中设置:

cd  "C:\Program Files (x86)\puTTY"
pscp   -pw pwd F:\Test\file_to_send.txt login@my_ip:/home/bin

2)

try {
        String[] command = new String[3];
        command[0] = "cmd";
        command[1] = "/c";
        command[2] = "cd \"C:\\Program Files (x86)\\puTTY\" && pscp   -pw pwd F:\\Test\\file_to_send.txt login@my_ip:/home/bin";

        Process p = Runtime.getRuntime().exec(command);

        BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line = reader.readLine();
        while (line != null) {
            System.out.println(line);
            line = reader.readLine();
        }
        BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
        BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
        String Error;
        while ((Error = stdError.readLine()) != null) {
            System.out.println(Error);
        }
        while ((Error = stdInput.readLine()) != null) {
            System.out.println(Error);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

1) cmd 在 F:\Test 文件夹中打开,并且命令分别从 F:\Test 运行。 2) 'pscp' 不被识别为内部或外部命令,

最佳答案

This是如何运行 shell 命令的一个很好的例子。您不需要打开 putty 来运行系统命令。

您可以使用 native java 库来执行 shell 命令,但要注意这些命令是特定于操作系统的。我之前在一个项目中做过这样的事情,我们必须在 java 中模拟 shell,一旦你知道自己在做什么,这就很容易了。

我建议稍微模块化您的代码。例如

  1. 读取用户输入
  2. 解析用户输入
  3. 返回错误或执行命令

关于java - 如何在java中运行依赖的cmd命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23872317/

相关文章:

java - 如何让用户配置 war 文件中的文件

windows - 字符串匹配后输出行的批处理文件,文件名

scripting - Psexec 、 cmd 和批处理文件

Windows命令行: how to loop over a list?

Windows 命令解释器 : how to obtain exit code of first piped command

java - 存储包含图像、声音和其他数据等信息的随机访问数据文件

java - Sonarqube UI 很久没有更新

java - 如何从java将变量传递给lua脚本? ( io.生菜.core )

java - 如何从数组列表中删除多余的空格

ios - xcodebuild 命令中的 xcconfig 选项