none
Batch Datei ausführen RRS feed

  • Frage

  • Guten Tag,

    Ich habe folgendes Problem beim Ausführen meiner Bathdatei:

    bukkit = new Process();
    StreamWriter consolewriter;
    
    bukkit.StartInfo.FileName = "cmd.exe";
    bukkit.StartInfo.Arguments = @"/c J:\Dokumente\Bukkit\craftbukkit.bat";
    bukkit.StartInfo.UseShellExecute = false;
    bukkit.StartInfo.RedirectStandardOutput = true;
    bukkit.StartInfo.RedirectStandardInput = true;
    bukkit.StartInfo.RedirectStandardError = true;
    bukkit.StartInfo.ErrorDialog = false;
    
    if(bukkit.Start())
    {
    bukkit.OutputDataReceived += new DataReceivedEventHandler(bukkit_OutputDataReceived);
    bukkit.ErrorDataReceived += new DataReceivedEventHandler(bukkit_ErrorDataReceived);
    bukkit.BeginErrorReadLine();
    bukkit.BeginOutputReadLine();
    consolewriter = bukkit.StandartInput();
    
    isrunning = true;
    }

    Wenn ich das Programm nun Starte, öffnet sich das cmd Fenster ganz kurz und schliesst sich danach sofort wieder. Es blinkt also nur einmal auf.
    Wenn ich die Batchdatei manuell ausführe fuktioniert alles einwandfrei.

    Hier der Inhalt der Batchdatei:

    @echo off
    java -Xmx1G -Xms1G -jar craftbukkit.jar
    PAUSE

    Wenn ich die Bat datei also manuell ausführe, öffnet sich das cmd fenster und es wird dort der Output der craftbukkit.jar angezeigt:

    http://img3.fotos-hochladen.net/uploads/unbenanntc2ijoulsvn.png

    Help Please!


    • Bearbeitet ThaCorp Sonntag, 24. Februar 2013 11:25
    Sonntag, 24. Februar 2013 11:00

Alle Antworten

  • Hallo,

    Das die Batch-Datei wieder zu geht, liegt an dieser Zeile:

    bukkit.StartInfo.RedirectStandardInput = true;

    Damit leitest du die Eingabe auf dein Programm um und dieses interessiert sich nicht für die PAUSE-Anweisung.



    Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook | Snippets

    Sonntag, 24. Februar 2013 11:27
    Moderator
  • Hallo,

    Das die Batch-Datei wieder zu geht, liegt an dieser Zeile:

    bukkit.StartInfo.RedirectStandardInput = true;

    Damit leitest du die Eingabe auf dein Programm um und dieses interessiert sich nicht für die PAUSE-Anweisung.



    Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook | Snippets

    Und wie kriege ich es hin, ohne den StandartInput auf false zu sezten? :o
    Weil ich nähmlich den Input und den Output unbedingt auf meinem Programm leiten will

    Sonntag, 24. Februar 2013 12:20
  • Wenn du die Ein- und Ausgaben sowieso in dein Programm umleitest, warum möchtest du dann das Fenster offen halten?

    Hast du mal versucht direkt den Startbefehl für Java von C# aus zu starten?

    java -Xmx1G -Xms1G -jar craftbukkit.jar


    Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook | Snippets

    Sonntag, 24. Februar 2013 16:26
    Moderator