.nils: .bat-Datei, wie das Dos-Fenster schließen?

Hallo,

Ich hab mir gerade argo uml runtergeladen (In Java geschriebenes Programm zum Erstellen von UML-Diagrammen).
Habe mir eine .bat-Datei angelegt(Inhalt: java -jar c:\Programme\argo.uml\argouml.jar), um das Programm per Doppelklick zu öffnen.

Frage: Welchen Befehl muß ich hinzufügen, damit sich das Dos-Fenster schließt, wenn das Programm gestartet ist? Ich hab hierzu in der Suche nichts gefunden.

Gruß, Nils

  1. Hi,

    Frage: Welchen Befehl muß ich hinzufügen, damit sich das Dos-Fenster schließt, wenn das Programm gestartet ist? Ich hab hierzu in der Suche nichts gefunden.

    so ohne weiteres wird das nicht gehen, weil deine .bat-Datei auf den Rückgabewert wartet, den es erst bei Programmende bekommt.
    Wenn es nicht zufällig eine andere Methode des Aufrufes externer Programme gibt, wird das so ohne weiteres nicht gehen.

    MfG
    Rouven

    --
    -------------------
    There's no such thing as a free lunch  --  Milton Friedman
    1. Hallo,

      Erstmal vielen Dank für die superfixen Antworten.
      Es ist so: das Programm wird über eine jar-Datei gestartet und darauf doppelklicken, funktioniert nicht, weil jar-Dateien bei mir Filzip zugeordnet sind...

      Moment, Idee, da könnte ich doch die Zuordnung wieder ändern.

      Welchem Programm muß ich jar-Dateien Zuordnen, damit sie bei Doppelklick ausgeführt werden? java.exe habe ich probiert, klappt nicht.

      Gruß, Nils

      1. Hallo .nils,

        Welchem Programm muß ich jar-Dateien Zuordnen, damit sie bei Doppelklick ausgeführt werden? java.exe habe ich probiert, klappt nicht.

        Mit der javaw.exe glaube ich.

        Mit freundlichem Gruß
        Micha

        --
        LeagueEditor JavaScript :: simple Ligaverwaltung auf der Basis von JavaScript || JS Tetris :: für zwischendurch
        1. Hallo,

          Mit der javaw.exe glaube ich.

          ne, klappt leider auch nicht, weder mit java.exe, javaw.exe oder javaws.exe.

          Was solls, ist ja auch nicht so wichtig, danke dennoch an alle

          Gruß, Nils

          1. Hallo .nils,

            Mit der javaw.exe glaube ich.
            ne, klappt leider auch nicht...

            Sollte aber. Alternativ kannst Du auch mit dem JavaLauncher von Jacob Marner (finde den Link gerade nicht mehr) die JAR's starten. Das ist eine Exe-Datei, die das JAR-File aufruft. Dabei öffnet sich auch keine Konsole und die Exe kann ein nettes Icon auf dem Desktop bekommen.

            Mit freundlichem Gruß
            Micha

            --
            LeagueEditor JavaScript :: simple Ligaverwaltung auf der Basis von JavaScript || JS Tetris :: für zwischendurch
            1. Hallo,

              (...)Alternativ kannst Du auch mit dem JavaLauncher von Jacob Marner (finde den Link gerade nicht mehr) die JAR's starten. Das ist eine Exe-Datei, die das JAR-File aufruft.

              Danke, das werde ich mal ausprobieren

              Gruß, Nils

  2. Hallo .nils.

    Frage: Welchen Befehl muß ich hinzufügen, damit sich das Dos-Fenster schließt, wenn das Programm gestartet ist?

    Du musst anders an die Sache herangehen. Schließt du das Fenster, werden automatisch auch sämtliche Kindprozesse geschlossen.

    Du solltest versuchen, das Programm per „start <Kommando>“ aufzurufen. Danach kannst du per „exit“ das Fenster schließen.

    Einen schönen Donnerstag noch.

    Gruß, Ashura

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
    [HTML Design Constraints: Logical Markup]
  3. Hallihallo!

    Vielleicht verstehe ich da grade was ziemlich falsch, aber warum legst Du nicht einfach eine Verknüpfung an, statt einer bat- Datei?
    Dann würde sich das Problem mit dem DOS- Fenster gar nicht erst ergeben...

    Viele liebe Grüße,
    Der Dicki

  4. Hallo Nils,

    Habe mir eine .bat-Datei angelegt(Inhalt: java -jar c:\Programme\argo.uml\argouml.jar), um das Programm per Doppelklick zu öffnen.

    auch im Zeitalter von Windows nutze ich Batchdateien gelegentlich ganz gern, weil sie manchmal doch sehr praktische Möglichkeiten eröffnen. Aber in deinem Beispiel frage ich mich, wozu das gut sein soll. Warum legst du die Befehlszeile, die du in der Batchdatei aufrufst, nicht direkt als Windows-Verknüpfung an?

    Frage: Welchen Befehl muß ich hinzufügen, damit sich das Dos-Fenster schließt, wenn das Programm gestartet ist? Ich hab hierzu in der Suche nichts gefunden.

    Wenn's aber unbedingt die Batchdatei sein soll: Rufe die darin gestarteten Programme nicht direkt auf, sondern stelle den Befehl "start" voran. In deinem Fall also:

    start java -jar c:\Programme\argo.uml\argouml.jar

    Dann wartet cmd.exe beim Abarbeiten der Batchdatei nicht auf den Exitcode des aufgerufenen Programms, die Batchdatei läuft durch und das Konsolenfenster schließt sich zum Schluss automatisch.

    So long,
     Martin

    --
    why the heck do you jerk think, that wir ein doppelposting nicht bemerken, wenn you zwischendurch the sprache wechselst?
      (wahsaga)
    1. Hallo Martin,

      (...) Warum legst du die Befehlszeile, die du in der Batchdatei aufrufst, nicht direkt als Windows-Verknüpfung an?

      weil Doppelklick auf jar-Dateien bei mir gerade nicht funzt, siehe mein zweites Posting..

      Ich habe das mit der "start" am Anfang probiert, es funktioniert leider nicht.
      Noch ne Idee?

      Gruß, Nils

      1. Hallo,

        (...) Warum legst du die Befehlszeile, die du in der Batchdatei aufrufst, nicht direkt als Windows-Verknüpfung an?
        weil Doppelklick auf jar-Dateien bei mir gerade nicht funzt, siehe mein zweites Posting..

        ich habe ja auch nicht gesagt, du sollst eine Verknüpfung auf die jar-Datei legen, sondern auf die *ganze Befehlszeile*. Wenn du die aus einer Batchdatei starten kannst, dann geht das auch mit einer Verknüpfung.

        Ich habe das mit der "start" am Anfang probiert, es funktioniert leider nicht.

        Was heißt "funktioniert nicht"? Was passiert? Was passiert nicht?

        So long,
         Martin

        --
        Irgendwann in grauer Vorzeit benutzte einer unserer prähistorischen Vorfahren ein Schimpfwort anstelle der Keule.
        Die Zivilisation hatte begonnen.
        1. Hallo wieder,

          ich habe ja auch nicht gesagt, du sollst eine Verknüpfung auf die jar-Datei legen, sondern auf die *ganze Befehlszeile*. Wenn du die aus einer Batchdatei starten kannst, dann geht das auch mit einer Verknüpfung.

          Ach so. Was muß ich denn Da als Ziel eingeben? Hab mal %windir%\system32\cmd.exe "java -jar c:\Programme\argo.uml\argouml.jar" probiert, aber das ist wohl der falsche Befehl.

          Was heißt "funktioniert nicht"? Was passiert? Was passiert nicht?

          Es bleibt, wie es war, das Konsolenfenster bleibt geöffnet und wenn ich es schließe per x-Button, schließt sich auch der Kindprozess, nämlich das Programm.

          Gruß, Nils

          1. Hi,

            Was muß ich denn Da als Ziel eingeben? Hab mal %windir%\system32\cmd.exe "java -jar c:\Programme\argo.uml\argouml.jar" probiert, aber das ist wohl der falsche Befehl.

            ja, in der Tat. Lass die cmd.exe hier einfach aus dem Spiel und trage nur das ein, was du eben in Anführungszeichen gesetzt hast (natürlich ohne die Anführungszeichen selbst). Denn nur das ist doch der eigentliche Programmaufruf.

            Es bleibt, wie es war, das Konsolenfenster bleibt geöffnet und wenn ich es schließe per x-Button, schließt sich auch der Kindprozess, nämlich das Programm.

            Das ist seltsam. Ich habe natürlich vorher versucht, das zu verifizieren und habe ersatzweise notepad.exe anstatt java.exe aus der Batchdatei gestartet. Wenn ich das Programm direkt aufrufe, habe ich die Situation, wie du sie beschreibst: Das Konsolenfenster bleibt offen und wartet, bis das aufgerufene Programm beendet ist. Mit dem start-Kommando läuft die Batchdatei durch, das Fenster schließt sich, und das aufgerufene Programm bleibt als eigenständiger Prozess offen. Wenn das bei dir nicht funktioniert, hast du irgendwo noch einen kleinen (Denk?)Fehler drin.

            So long,
             Martin

            --
            Ja, ja... E.T. wusste schon, warum er wieder nach Hause wollte.
            1. Hallo,

              ja, in der Tat. Lass die cmd.exe hier einfach aus dem Spiel und trage nur das ein, was du eben in Anführungszeichen gesetzt hast (natürlich ohne die Anführungszeichen selbst). Denn nur das ist doch der eigentliche Programmaufruf.

              Ja, das funktioniert jetzt so, aber die Abhängigkeit der beiden Fenster bleibt bestehen. Wenn ich "start" an den Anfang hinzufüge, sagt Windows mir, das sei ein unbekanntes Programm.
              In der .bat-Datei bewirkt das start am Anfang hingegen garnichts.

              (...) Mit dem start-Kommando läuft die Batchdatei durch, das Fenster schließt sich, und das aufgerufene Programm bleibt als eigenständiger Prozess offen.

              Sowas Blödes, warum funktioniert das bei mir nicht so :-(
              Hast Du vielleicht ein anderes System? Win 2000? Ich hab XP...
              ist dieses start ein Programm oder ein Befehl?

              Gruß, Nils

              1. Hi Nils,

                Ja, das funktioniert jetzt so, aber die Abhängigkeit der beiden Fenster bleibt bestehen. Wenn ich "start" an den Anfang hinzufüge, sagt Windows mir, das sei ein unbekanntes Programm.
                In der .bat-Datei bewirkt das start am Anfang hingegen garnichts.

                bitte halte zwei Dinge auseinander: Der Start eines Programms über eine Windows-Verknüpfung oder aus einer Batchdatei ist zwar fast dasselbe, aber es gibt wichtige Unterschiede im Detail.

                Beim Aufruf über eine Verknüpfung wird die Befehlszeile direkt von der  Windows-Shell ausgewertet (normalerweise der Explorer). Dann *muss* das erste Element der Zeile ein Programm sein, das gestartet wird (oder ein Dokument, das mit einer bestimmten Anwendung assoziiert ist).
                Beim Start aus einer Batchdatei wird die Befehlszeile dagegen von cmd.exe ausgewertet. Da gibt es ein paar zusätzliche Kniffe und Möglichkeiten, unter anderem das erwähnte start-Kommando. Das ist übrigens kein Programm, sondern ein interner Befehl der cmd.exe (in Windows 9x war es noch ein Programm namens start.exe).

                Sowas Blödes, warum funktioniert das bei mir nicht so :-(
                Hast Du vielleicht ein anderes System? Win 2000? Ich hab XP...

                Das tut mir leid für dich - aber in dem Punkt verhält sich XP normalerweise genauso wie ein richtiges Windows (z.B. Win2k). Ashura wird mir bestätigen, dass er schon so manchen Tipp von mir bzgl. "start" auch in XP verifizieren und sogar weiter ausbauen konnte. Das geht also. Und es wäre doch gelacht, wenn wir nicht noch rauskriegen, wo es jetzt bei dir klemmt.

                So long,
                 Martin

                --
                Alleine sind wir stark...
                gemeinsam sind wir unausstehlich!
                1. Hallo,

                  Ich habe mal mit so einem Optimierungsprogramm vermeintlich unnötige temporäre Dateien gelöscht. Danach konnte ich z.B. nicht mehr auf die Startseite von Xampp gelangen. Ich könnte mir vorstellen, das ich hier versehentlich irgendwelche für die java.exe wichtigen Dateien gelöscht habe.
                  Wie gesagt, so wichtig ist es mir gerade nicht, ich will Dich auch nicht von deinen Aufgaben abhalten :-)

                  Gruß, Nils

                  1. Hallo Nils!

                    Ich könnte mir vorstellen, das ich hier versehentlich irgendwelche für die java.exe wichtigen Dateien gelöscht habe.

                    Ich eigentlich nicht.

                    Warum legst du denn nicht - wie schon mehrfach erwähnt - einfach eine Verknüpfung an, die folgendes Ziel hat: "java -jar c:\programme\argo.uml\argouml.jar"?
                    Das wär doch das allereinfachste. Sollte das so nicht funktionieren, hilft es evtl. den komletten Pfad zu deiner java.exe anzugeben (also dann z.B. so: "c:\programme\jkd-1.5.0_07\bin\java.exe -jar c:\programme\argo.uml\argouml.jar").

                    Ich hoffe das hilft dir weiter...

                    Servus

                    --
                    flowh .
                    Es ist nicht deine Schuld, dass die Welt ist, wie sie ist, es wär nur deine Schuld, wenn sie so bleibt.
                       - Die Ärzte
                    1. Hallo flowh,

                      Warum legst du denn nicht - wie schon mehrfach erwähnt - einfach eine Verknüpfung an, die folgendes Ziel hat: "java -jar c:\programme\argo.uml\argouml.jar"?

                      Weil, wie ich es schon im Titel meines Postings erwähnt habe, es darum geht, wie ich das Kommandozeilenfenster geschlossen bekomme, nachdem das Programm (die .jar-Datei) gestartet wurde

                      Gruß, Nils

                      1. Hallo Nils!

                        Weil, wie ich es schon im Titel meines Postings erwähnt habe, es darum geht, wie ich das Kommandozeilenfenster geschlossen bekomme, nachdem das Programm (die .jar-Datei) gestartet wurde

                        Also du willst ein jar-Datei starten? Dazu brauchst du doch gar keine Batchdatei, wenn du meinen Vorschlag umsetzt; somit erübrigt sich auch die Frage nach dem Kommandozeilenfenster...

                        Servus

                        --
                        flowh .
                        Es ist nicht deine Schuld, dass die Welt ist, wie sie ist, es wär nur deine Schuld, wenn sie so bleibt.
                           - Die Ärzte
                        1. Hallo,

                          Also du willst ein jar-Datei starten? Dazu brauchst du doch gar keine Batchdatei, wenn du meinen Vorschlag umsetzt; somit erübrigt sich auch die Frage nach dem Kommandozeilenfenster...

                          das erzähle ich ihm schon seit gestern abend. Aber irgendwie scheint Nils den Wald vor lauter Bäumen nicht zu sehen. ;-)

                          Schönes Wochenende,
                           Martin

                          --
                          Kleine Geschenke erhalten die Freundschaft.
                          Große verderben sie aber meist auch nicht.
                          1. Hallo,

                            Also du willst ein jar-Datei starten? Dazu brauchst du doch gar keine Batchdatei, wenn du meinen Vorschlag umsetzt; somit erübrigt sich auch die Frage nach dem Kommandozeilenfenster...

                            das erzähle ich ihm schon seit gestern abend. Aber irgendwie scheint Nils den Wald vor lauter Bäumen nicht zu sehen. ;-)

                            Also, ich hab jetzt mal mit Wink zwei Flash-Aufzeichnungen erstellt:

                            Einmal das Starten per Verknüpfung.

                            Und einmal das Starten per bat-Datei.

                            Bitte beachtet, das beim Schließen des Kommandozeilenfensters sich auch die Applikation schließt. Genau das möchte ich unterbinden.

                            Gruß, Nils

                            1. Hallo,

                              Ja ja ... auf einmal keine guten Ratschläge mehr :-(

                              Gruß, Nils

                              1. Hallo .nils.

                                Ja ja ... auf einmal keine guten Ratschläge mehr :-(

                                Weil niemand dein Problem nachvollziehen kann. Wenn es mit „start“ nicht geht, geht es vermutlich garnicht. Aus welchem Grund auch immer.

                                Einen schönen Samstag noch.

                                Gruß, Ashura

                                --
                                sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                                „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
                                [HTML Design Constraints: Logical Markup]
                                1. Hallo, .ashura

                                  Weil niemand dein Problem nachvollziehen kann. ...

                                  Meinst Du damit, "keiner weiß eine Lösung" oder "Du drückst Dich unverständlich aus"?

                                  ...Wenn es mit „start“ nicht geht (...)

                                  He, willst Du etwa meinen Thread abwürgen? Nix da!

                                  Ich kann mir folgende Ursachen vorstellen, das es nicht funktioniert:

                                  1. Ich drücke mich nicht verständlich aus, oder höre nicht richtig zu. Das glaube ich nicht.
                                  2. Die Ratschläge, die ihr mir gegeben habt, sind sachlich falsch, das glaube ich auch nicht.
                                  3. ich habe an Windows Einstellungen vorgenommen, die hier störend dazwischenfunken. Das halte ich für wahrscheinlich.
                                  Das habe ich auch, nämlich verschiedene Services abgeschaltet und ein paar Werte in der Registry geändert, wie es z.B. bei Gaijin (s. oben links) oder bei chip online beschrieben wurde.
                                  Außerdem habe ich mal durch ein Programm die Registry aufgeräumt. Ich habe mal alle temporären Dateien auf meiner Festplatte gesucht und dann gelöscht. Ich habe ein paar Autostartprogramme abgeschaltet und die Festplatte öfter defragmentiert.

                                  Also alle möglichen Fehlerquellen.

                                  Was ich etwas schade finde ist, das der, der irgenwann einmal das selbe Problem hat, und auf seiner Suche auf diesen archivierten Thread stößt, diesen wohl recht interessiert liest, bis er dann durch dein "es geht vermutlich gar nicht" abgeschmettert wird. Es geht bestimmt, nur wie?

                                  Gruß, Nils

                                  1. Hallo Nils.

                                    Weil niemand dein Problem nachvollziehen kann. ...

                                    Meinst Du damit, "keiner weiß eine Lösung" oder "Du drückst Dich unverständlich aus"?

                                    Ersteres. Befolge bitte erst einmal Detlefs Vorschlag und poste, was passiert.

                                    Einen schönen Sonntag noch.

                                    Gruß, Ashura

                                    --
                                    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                                    „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
                                    [HTML Design Constraints: Logical Markup]
                                    1. Hallo Ashura & Detlef,

                                      Sorry Detlefs Posting ist mir durch die Lappen gegangen.

                                      Also, ich habe das mal ausprobiert (neue Zeile mit 'pause')und folgendes ist dabei herausgekommen.

                                      Das was da so kurz aufblinkt sieht so aus:

                                      Bissige Bild zweier Kommandozeilen, cmd.exe und java.exe

                                      D.h. ja erstmal, das das gewünschte passiert: die bat ruft über die cmd.exe die java.exe auf. Stürzt dann nur leider direkt ab.
                                      Noch ne Idee?
                                      Ich hoffe, es nervt nicht langsam...

                                      Gruß, Nils

                                      1. Hallo Nils,

                                        D.h. ja erstmal, das das gewünschte passiert: die bat ruft über die cmd.exe die java.exe auf. Stürzt dann nur leider direkt ab.

                                        Ich hatte zwar nicht erwartet, dass es nun abstürzt, ansonsten scheint sich mein Verdacht bestätigt zu haben.
                                        (PAUSE hätte eigentlich dazu führen müssen, dass beide Fenster stehen bleiben.)
                                        Das Fenster, welches du nicht schließen kannst, ist also _nicht_ das cmd-Fenster. Es ist das Fenster der java.exe.
                                        Das bedeutet, dass du keine Möglichkeit hast dieses Fenster durch irgendwelche Befehle in der BAT-Datei oder Einstellungen in der Verknüpfung zu schleißen.

                                        Noch ne Idee?

                                        Schaue in die Hilfe oder Beschreibung zur java.exe, ob es dort einen Parameter gibt, der das Fenster schließt, wenn es nicht benötigt wird.

                                        Auf Wiederlesen
                                        Detlef

                                        --
                                        - Wissen ist gut
                                        - Können ist besser
                                        - aber das Beste und Interessanteste ist der Weg dahin!
                            2. Hallo Nils

                              Einmal das Starten per Verknüpfung.

                              Das Eigenschaftenfenster der Verknüpfung enthält sämtliche Reiter für Einstellungen, die bei Windowsprogrammen wirkungslos sind und bei diesen normalerweise auch überhaupt nicht angezeigt werden.

                              Und einmal das Starten per bat-Datei.

                              Das sieht nicht wie das Dos-Fenster einer BAT-Datei aus, sondern eher wie das Fenster einer Anwendung für MS-Dos.

                              Wenn du das Fenster der Anwendung selbst schließt, wird diese natürlich beendet.

                              Mache mal noch einen Test, hänge an deine BAT-Datei noch eine Zeile heran, in der du den Befehl PAUSE notierst und berichte, was dann beim Aufruf dieser passiert.

                              Auf Wiederlesen
                              Detlef

                              --
                              - Wissen ist gut
                              - Können ist besser
                              - aber das Beste und Interessanteste ist der Weg dahin!