Batch Datei startet nicht Aufgrund "Pfad Fehlern"

  • VB.NET
  • .NET (FX) 4.0

Es gibt 101 Antworten in diesem Thema. Der letzte Beitrag () ist von Gangsterkrafter.

    Okay, Danke euch Beiden :) , Path.Combine ist jetzt wieder : Dim serverFile = New FileInfo(Path.Combine(myLocalAppDataFolder, "Minecraft Server Launcher\Server\craftbukkit.jar"))
    Jetzt gibt es nur 2 Probleme:
    Problem 1:
    Spoiler anzeigen

    Wenn ich den server nun "Starte" Passiert aber nichts im Server Ordner

    Aber, Normalerweise sollte der Ordner Ungefaehr So aussehen :


    Problem 2:
    Spoiler anzeigen

    Er will den Log-Code des Servers nicht in der RichTextBox1 Ausgeben (Also startet er den Server wahrscheinlich erst garnicht, allein schon wegen Problem 1) Der Code:

    VB.NET-Quellcode

    1. Private Sub Process_OutputDataReceived(sender As Object, e As DataReceivedEventArgs)
    2. Invoke(Sub()
    3. 'Hier kannst du über e.Data die neue Zeile abfragen
    4. RichTextBox1.Text = e.Data
    5. End Sub)
    6. End Sub

    e.Data = RichTextBox1.Text funktioniert zb. Nicht!
    OutputDataReceived Ist von @VincentTB 's Code:

    VB.NET-Quellcode

    1. AddHandler _serverProcess.OutputDataReceived, AddressOf Process_OutputDataReceived
    2. AddHandler _serverProcess.ErrorDataReceived, AddressOf Process_OutputDataReceived


    Begeisterter BF4 Spieler :D
    Weißte, es mag zwar für manche Leute schwer zu glauben sein. Aber bei weitem nicht alle kennen Minecraft. Mir sagen zwei Bilder rein gar nichts. Etwas Text wäre angemessen.

    Zu dem Code unten, oder wie du es nennst "Problem 2":
    Hast du einen Breakpoint auf Invoke gesetzt? Geht er in das Event rein? Wenn ja was steht in e.Data? Musste halt Schritt für Schritt ran tasten. So machen wir das alle. Könnte mir vorstellen, dass e.Data nur die neuen Daten enthält. Das würde bedeuten, dass du das hinzufügen und nicht ersetzen musst.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Okay Ich Erklaere es dir Mal, da dich Ja nicht mit Minecraft auskennt , haste Recht! kann nicht jeder wissen,
    Wenn Man einen Minecraft Server Startet dann Normalerweise in Einer Eingabeaufforderung(.bat Datei) Wenn dieser Server Dann
    "Entpackt ist" kann man die Serverdateien im Ordner Sehen so wie Bei Problem 1, Bild Nr.2 doch, Man sieht Diese dort nicht
    was Bedeutet dass Der server Erst garnicht Startet, da ja Keine dateien im Ordner gepackt wurden, Wenn ich Vincent's Code Richtig lese
    Fuehrt er den Server mit dem Befehl :
    _serverProcess.StartInfo.Arguments = String.Format("-Xmx{0}M -Xms{0}M -jar {1} -nojline", "512", myLocalAppDataFolder & "\Minecraft Server Launcher\Server\craftbukkit.jar")
    aus.

    Bei Invoke Sub ist Indirekt ein Fehler denn, wenn der Server garnicht erst Startet woher soll er dann den Log-Code Bekommen?

    Ein Log Code Sieht zb. So aus ( Protokoll des Servers )

    Quellcode

    1. Loading libraries, please wait...
    2. [17:59:51 INFO]: Starting minecraft server version 1.8.8
    3. [17:59:52 INFO]: Loading properties
    4. [17:59:52 INFO]: Default game type: SURVIVAL
    5. [17:59:52 INFO]: Generating keypair
    6. [17:59:52 INFO]: Starting Minecraft server on *:25565
    7. [17:59:52 INFO]: Using default channel type
    8. [17:59:52 INFO]: This server is running CraftBukkit version git-Bukkit-62a2169 (MC: 1.8.8) (Implementing API version 1.8.8-R0.1-SNAPSHOT)
    9. [17:59:53 INFO]: Preparing level "world"
    10. [18:00:21 INFO]: Server permissions file permissions.yml is empty, ignoring it
    11. [18:00:21 INFO]: Done (4,257s)! For help, type "help" or "?"


    Dieser Code Sollte dann In der Richtextbox Stehen im Programm
    Begeisterter BF4 Spieler :D
    @Gangsterkrafter
    Ein weiteres Problem hat dir @thefiloe schon geschrieben:

    thefiloe schrieb:

    ​Zusätzlich enthällt der Pfad Spaces. Somit musste den in einer CommandLine quoten.


    Bedeutet, dass deine CommandLine wie folgt aussehen könnte:

    Quellcode

    1. ​-Xmx512M -Xms512M -jar C:\Users\Vincent\AppData\Roaming\Minecraft Server Launcher\Server\craftbukkit.jar -nojline

    was ja falsch ist.
    Mfg
    Vincent

    Der Pfad ist Richtig nur es Passiert halt nichts ich Koennte die Aktuelle Projektmappe Nochmal Hinzufuegen , Diesmal aber
    Ohne Anfaenger Fehler und ohne .exe datei :) Nur, Falls du Die Fehler nochmal selbst sehen Willst.
    Dateien
    Begeisterter BF4 Spieler :D
    Ja, der Pfad kann ja richtig sein, aber um den geht es ja nicht. Es geht um die Commando Zeile und die ist falsch. Schau mal: Jeder Parameter ist durch ein Leerzeichen getrennt. Bei dieser CommandoZeile würden folgende Parameter da sein:

    Quellcode

    1. -Xmx512M -Xms512M -jar C:\Users\Vincent\AppData\Roaming\Minecraft Server Launcher\Server\craftbukkit.jar -nojline
    1. -Xmx512M
    2. -Xms512M
    3. -jar
    4. C:\Users\Vincent\AppData\Roaming\Minecraft
    5. Server
    6. Launcher\Server\craftbukkit.jar
    7. -nojline
    Ich glaube nicht, dass das das ist, was du willst. Zumindest Java wird das nicht verstehen
    Mfg
    Vincent

    thefiloe schrieb:

    quoten

    => unter Anführungszeichen stellen.
    Du solltest Beiträge mit entsprechenden Hinweisen nicht ignorieren. Ich schreibe sowas nicht ohne Grund. Und wenn du es nicht verstehst, dann frag nach. Wenn du es jedoch einfach ignorierst, kannste davon ausgehen, dass du recht bald auf einen Fehler stoßen wirst.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Du musst den Pfad quoten "", wie @thefiloe schon gesagt hat.
    Edit: Zu langsam.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Sry ich Lese Manchmal Unabsichtlich nicht den Ganzen text weil mir dann wieder irgent etwas in den sinn Kommt und ich dann
    Aufhoere zu lesen.
    Jetzt zur wahrscheinlich duemmsten frage im ganzen forum: was ist quoten?
    Wie wuerde dieser Code nun "gequotet" aussehen?

    VB.NET-Quellcode

    1. _serverProcess.StartInfo.Arguments = String.Format("-Xmx{0}M -Xms{0}M -jar {1} -nojline", "512",
    2. myLocalAppDataFolder & "\Minecraft Server Launcher\Server\craftbukkit.jar")
    Begeisterter BF4 Spieler :D
    Wurde doch erklärt. Wenn Du meinst, wie man Quotes dann in einen String bringt: "Hier ist ein Quote: ""!"

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Gangsterkrafter schrieb:

    Jetzt zur wahrscheinlich duemmsten frage im ganzen forum: was ist quoten?

    thefiloe schrieb:

    => unter Anführungszeichen stellen.

    Trade schrieb:

    Du musst den Pfad quoten "", wie @thefiloe schon gesagt hat.




    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.

    Gangsterkrafter schrieb:

    myLocalAppDataFolder eine variable ist?

    Nicht, dass es von Relevanz wäre, aber nein das ist allen nach mehrjähriger Erfahrung vollkommen entgangen...

    Jetzt lies mal diesen Post: Batch Datei startet nicht Aufgrund "Pfad Fehlern"
    Dort steht weshalb du quoten musst.
    Und dann probier das bitte mal umzusetzen. Ich meine rein gar alles vorkauen hat einfach auch keinen Sinn.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Ich habe Dir doch sogar ein Beispiel gegeben, wie Du die Quotes in einem String einfügst. Außerdem wurde Dir ja bereits detailliert erklärt, wie das Ganze ohne unterteilt wird. Also musst Du um den Pfad Quotes (Anführungszeichen) setzen, damit das als ein "Token" angesehen wird.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Du kannst das da nicht einfach weglassen.

    VB.NET-Quellcode

    1. Dim text As String = "Hallo"


    Das ist ein String. Wie oben gesagt kannst Du eigene Anführungszeichen in den String schreiben, indem Du diese doppelt reinschreibst:

    VB.NET-Quellcode

    1. Dim textWithQuotes As String = "Hallo, hier sind Quotes: "" !"


    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Dir fehlt grundlegendes Verständnis von Strings und Variablen. Will ich dir doch mal ein bisschen was erklären:
    Folgendes Beispiel:
    Was denkst du, wird jetzt in result für ein String stehen?:

    VB.NET-Quellcode

    1. Dim x As String = "Hallo"
    2. Dim result As String = "!" & x & "asd"

    Lösung

    Quellcode

    1. !Halloasd

    Es ist eine einfache Stringverkettung. Mit den Variablen ist es wie in Mathe: Sie stehen für einen Wert, in dem Fall Hallo


    Als nächstes, was denkst du ergibt das hier für einen String?

    VB.NET-Quellcode

    1. """" & "Hallo" & """"

    Lösung

    Quellcode

    1. "Hallo"

    Anführungszeichen markieren den Anfang und das Ende des Strings. Somit musste man sich etwas überlegen, wie man das Anführungszeichen in einen String bekommt. Man nahm die Methode, einfach zwei Anführungszeichen zu machen. Wenn man ein Anführungszeichen allein haben will, muss man das Anfangsanführungszeichen, die zwei Anführungszeichen für den String und das Ende-Anführungszeichen machen, also insgesamt 4. Mal. Ein anderen Beispiel: "Dies ist ein AF: "". Cool, oder?".


    Als letztes haben wir String.Format. Dies erspart uns die ganzen & Zeichen. Folgender Code

    VB.NET-Quellcode

    1. String.Format("{0} ist ganz {1}", "Vincent", "cool")

    würde dann den String Vincent ist ganz cool ergeben. In die geschweiften Klammern schreiben wir den Index von den Parametern. Der Index fängt immer bei 0 an. Also steht Vincent stellvertretend für {0} und cool für {1}
    Mfg
    Vincent