【问题标题】:use java to make severals cmd commands使用java制作多个cmd命令
【发布时间】:2013-11-24 02:31:24
【问题描述】:

您好,我正在尝试使用 java 中的 rman 进行备份,我正在尝试使用 java 中的运行时,我能够打开 cmd,访问 rman,但之后我尝试提交的任何其他查询都将被执行。 我能够从 cmd 窗口和 sqlplus 窗口访问 rman 我已经尝试过使用;没有它 这是代码,请帮助我:

public void execute(JobExecutionContext context) throws JobExecutionException {
         command[0] = "cmd";
         command[1] = "/c";
         command[2] = "rman target / catalog rman/rman@xe;";
         command[3] = "backup as backupset database plus archivelog;";
         command[4] = "exit;";
         command[5] = "sqlplus.exe;";
         try {  
         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();
         }

这是输出:

Recovery Manager: Release 11.2.0.2.0 - Production on Lun Nov 11 22:11:12 2013

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

connected to target database: XE (DBID=2711152663)
connected to recovery catalog database

【问题讨论】:

    标签: java cmd runtime rman


    【解决方案1】:

    参见Problem with the output of a cmd command in java ...特别是如果您有多个命令需要cmd 执行,您必须使用& 符号将它们连接在一起。

    【讨论】:

      【解决方案2】:

      如果您想像在“交互式”会话中一样运行命令,则需要生成“cmd.exe”,然后使用p.getOutputStream()“写入”命令来执行。

      类似:

      ProcessBuilder pb = new ProcessBuilder("cmd.exe");
      pb.redirectErrorStream(true);
      Process p = pb.start();
      PrintWriter writer = new PrintWriter(p.getOutputStream());
      writer.println("rman target / catalog rman/rman@xe;");
      writer.println("backup as backupset database plus archivelog;");
      writer.println("exit;");
      writer.println("sqlplus.exe;");
      

      注意:如果您不阅读命令之间的p.getInputStream(),您可能会被阻止。

      【讨论】:

      • 我按照你说的做了,现在我只能访问 cmd :(
      • 尝试将 /k 添加到 ProcessBuilder,例如ProcessBuilder("cmd.exe", "/k").
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      • 2013-06-08
      • 2021-05-03
      • 2017-09-18
      • 2014-03-30
      • 1970-01-01
      相关资源
      最近更新 更多