【问题标题】:Java: Running cmd commands (multiple commands with multiple arguments at once)Java:运行 cmd 命令(一次带有多个参数的多个命令)
【发布时间】:2013-06-08 23:58:58
【问题描述】:

我运行 cmd(命令行)并以这种方式从 Java 运行我的批处理文件:

final String cmd = "cmd /c C: && dir && cd C:\MyApp\Maxi && dir && C:\MayApp\Maxi\deploy.bat";

try {


            Process process = Runtime.getRuntime().exec(cmd);

            final InputStream in = process.getInputStream();

            int ch;

            while((ch = in.read()) != -1) {
                System.out.print((char)ch);
            }
        } catch (IOException e) {
             System.out.println("IOException on CMD executing statement");
             e.printStackTrace();
        }

它运行成功,但是我修改了批处理文件并添加了一些参数,所以我必须将名称传递给批处理文件,所以我尝试了这个: (我发送“Name1”作为参数)

final String cmd = "cmd /c C: && dir && cd C:\MyApp\Maxi && dir && C:\MayApp\Maxi\deploy.bat Name1";

try {


            Process process = Runtime.getRuntime().exec(cmd);

            final InputStream in = process.getInputStream();

            int ch;

            while((ch = in.read()) != -1) {
                System.out.print((char)ch);
            }
        } catch (IOException e) {
             System.out.println("IOException on CMD executing statement");
             e.printStackTrace();
        }

但它现在不工作并且命令没有执行。我只得到“dir”命令输出。

谁能帮忙?

注意:命令在 CMD 上成功运行,但在 java.

【问题讨论】:

    标签: java command-line batch-file cmd command-line-arguments


    【解决方案1】:

    为什么要在一个命令中执行多项任务?例如换成C:\,dir再执行?

    您可以轻松地将所有这些任务集中到一个批处理文件中。

    这将帮助您“不”再次编译您的代码,以防某些目录结构发生变化。

    【讨论】:

    • 因为目录名称在我的代码中使用变量进行了参数化,并且我需要在调用批处理文件之前将光标移动到特定目录。你认为它会以这种方式工作吗?
    • 首先,你绝对不需要 DIR。其次,为您的命令提供双引号。例如&& "C:\\MayApp\\Maxi\\deploy.bat" "Name1"
    • 我只使用“DIR”来检查光标是否在移动以及是否有输出。谢谢你现在的工作:)
    • 如何通过相同的 java 代码运行配置文件中存在的命令?我想通过相同的 java 代码运行命令行脚本,我可以在硬编码时运行它,但我想从配置文件运行这些命令,请告诉我该怎么做?
    猜你喜欢
    • 1970-01-01
    • 2013-05-27
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 2012-04-10
    • 2014-02-08
    • 1970-01-01
    相关资源
    最近更新 更多