exec() und Batchdateien

tobias_petry

Erfahrenes Mitglied
Hallo ich habe das Problem, dass ich zu einer batch-Datei gerne ein GUI schreiben möchte, diese Batch-Datei beruht auf Ein- und Ausgaben.
Nun ist es aber so, dass bei Batch-Dateien mit Eingaben die Batch-Datei sich wirklich öffnet, was von mir eigentlich nicht geplant ist, dies würde ich gerne über die Streams lösen.
Habe ich in meinem Code nen krassen Denkfehler oder fehlt mir irgendwas? Die Forensuche hat leider nur grunsätzliche Probleme ausgespuckt.

Java:
package com0com.lib;

import java.io.InputStream;

public class Test {
	public static void main(String[] args) throws Exception {
    	Process process =  Runtime.getRuntime().exec("cmd /c setup.bat");
    	InputStream in=process.getInputStream();
    	int input;
		while((input=in.read())!=-1){
    		System.out.print(input);
    	}
        process.waitFor();
	}
}
 
Hallo,

also die Stdout - Ausgabe eines Prozesses würde ich so auslesen:
Java:
/**
 * 
 */
package de.tutorials;

import java.io.File;
import java.util.Scanner;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * @author Tom
 */
public class BatchOutputCaptureExample {

  /**
   * @param args
   */
  public static void main(String[] args) throws Exception {
    ProcessBuilder processBuilder = new ProcessBuilder("cmd", "/c", "ant");
    processBuilder.directory(new File("c:/temp"));

    final Process process = processBuilder.start();
    ExecutorService executorService = Executors.newSingleThreadExecutor();
    executorService.execute(new Runnable() {
      public void run() {
        Scanner scanner = new Scanner(process.getInputStream());
        while (scanner.hasNextLine()) {
          System.out.println(scanner.nextLine());
        }
        scanner.close();
      }
    });

    System.out.println(process.waitFor());
    executorService.shutdown();
  }
}

Ausgabe (bei einem ant build-skript das nur compiliert...)
Code:
Buildfile: build.xml

compile:

default:
     [echo] Finished

BUILD SUCCESSFUL
Total time: 0 seconds
0

Gruß Tom
 
hmm, also bei mir springt immernoch das Fenster auf, irgendwie komisch, habe es folgendermaßen angepasst:

Java:
ProcessBuilder processBuilder = new ProcessBuilder("cmd", "/c", "setup.bat");
processBuilder.directory(new File("I:/TW/java_files/com0com"));
 
Zurück