2017-05-13 1 views
0

Ich habe den folgenden Code unten in Eclipse/Java erstellt, der eine Batch-Datei ausführt, die wiederum ausgeführt werden soll, sobald alle meine TestNG-Tests ausgeführt wurden, aber manchmal wird die Bat-Datei ausgeführt und manchmal tut sie überhaupt nichts, irgendwelche Ideen ?Die beste Möglichkeit, einen Batch (Shell/CMD) -Befehl in Java/Eclipse auszuführen?

@AfterSuite(alwaysRun = true) 
public void executeBatFile() { 
    try { 
     List cmdAndArgs = Arrays.asList("cmd", "/c", "copyPasteImgs.bat"); 
     File dir = new File(Paths.get(System.getProperty("user.dir") + "/..").toRealPath() + "\\"); 
     ProcessBuilder pb = new ProcessBuilder(cmdAndArgs); 
     pb.directory(dir); 
     Process p = pb.start(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

Die Batch-Dateien verschieben Dateien aus einem lokalen Ordner auf einen Remote-Ordner (Wenn die Batch-Datei hasnt über Eclipse gearbeitet oder über jenkins aufgerufen habe ich ausgeführt manuell die Batch-Datei und es hat seine Jobs, sehr seltsam .. .)

dank für Ihre Hilfe

+0

Ist es möglich, dass das Skript ausgeführt wird, aber die Dateien nicht verschoben werden können (weil Dateien noch gesperrt sind)? Vielleicht wäre es hilfreich, eine Log-Ausgabe im Batch-Skript hinzuzufügen. – guenhter

+0

@guenhter danke allot für den Kommentar. Haben Sie irgendwelche Ressourcen/Links, die mir zeigen, wie man ein Protokoll aus einer Batch-Datei erstellt? Vielen Dank für Ihre Hilfe – Gbru

Antwort

1

Apache Commons CLI Funktionalitäten Befehlszeile von Java zu handhaben zur Verfügung stellt. Sie können den Exit-Wert auch verwenden, um eine Vorstellung davon zu erhalten, was mit Ihrem Befehl geschieht. Zum Beispiel:

String command = "dir"; 
CommandLine oCmdLine = CommandLine.parse(command); 
     DefaultExecutor oDefaultExecutor = new DefaultExecutor(); 
     oDefaultExecutor.setExitValue(0); 
     try { 
      int iExitValue = oDefaultExecutor.execute(oCmdLine); 
     } catch (ExecuteException e) { 
      System.err.println("Execution failed."); 
      e.printStackTrace(); 
     } catch (IOException e) { 
      System.err.println("permission denied."); 
      e.printStackTrace(); 
     } 
+0

thnaks so viel, wo würde ich auf die Batch-Datei zeigen oder den Code aus meiner Batch-Datei hinzufügen? – Gbru

+0

Ich denke, Sie können den vollständigen Pfad zu Ihrer Batch-Datei in 'Befehl' verwenden, oder Sie könnten auch Ihre Datei analysieren und verwenden Sie ihren Inhalt, es ist ziemlich genau –

+0

ok danke @zakaria Amin hoffe, du hast einen schönen Tag! – Gbru

Verwandte Themen