Unbekanntes Zeichen Taucht auf beim Schreiben einer .bat Datei

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von Fabian95qw.

    Unbekanntes Zeichen Taucht auf beim Schreiben einer .bat Datei

    Guten Tag ich bin ein Ziemlicher Neuling im Thema VB.

    Ich habe ein kleines Programm geschrieben, welches später über eine Shell einen java Command ausführen soll. Leider habe ich dabei festgestellt dass dieser Command immer in einer Fehlermeldung endet.

    Ich habe deshalb kurzerhand entschlossen es in ein .bat File schreiben zu lassen, da dieser Command wenn ich ihn in ein CMD C & P funktioniert.

    VB.NET-Quellcode

    1. Command = ("javaw.exe -Xms2048m -Xmx2048m -cp " & Quote & "C:\Users..\test.jar" & Quote) 'Dies ist ein String

    My.Computer.FileSystem.WriteAllText("C:\Test\test.bat", Command)[/vb]
    Das funktioniert auch soweit. Versuche ich nun jedoch das Batch File auszuführen funktioniert dieses nicht.

    Ich habe dadrin nichts Falsches gesehen also habe ich ein pause hinzugefügt.
    Nun kommt das komische wenn ich es nun ausführe passiert folgendes:

    Quellcode

    1. ╗┐javaw.exe -Xms2048m -Xmx2048m -cp "..."
    2. pause


    Wo kommen diese komischen Zeichen her? ╗┐ und warum sehe ich dieser in der .bat Datei nicht?
    Kann ich dieses Zeichen beim Schreiben rausfiltern? Oder woher kommt dieses?
    Ich habe auch zwischen dem " und dem j geprüft, da ist nichts dazwischen

    Hoffe auf baldige Antwort.

    Mit Freundlichen Grüssen
    Fabian95qw

    //edit: Korrektur

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Fabian95qw“ ()

    hat iwas mit Encoding zu tun, die beiden Zeichen sind Boms. Detect Encoding from BOM

    Deinen weiteren Ausführungen konnte ich nicht folgen, mir erschließt sich keinerlei Sinn von

    Fabian95qw schrieb:

    da dieser Command wenn ich ihn in ein CMD C & P funktioniert.


    oder

    Fabian95qw schrieb:

    wenn ich es nun ausführe passiert folgendes:

    Quellcode

    1. ╗┐javaw.exe -Xms2048m -Xmx2048m -cp
    2. pause
    wo passiert das? auf deinem Bildschirm? wie kommt es da hin?
    Das passieren war auf das Auführen der Batch Datei bezogen. (Dass diese komischen Zeichen auftauchten wenn ich die .bat Ausführte..)

    Habe das Problem mit den Zeichen Notdürftig behoben indem ich als erstes einen Zeilenumbruch gemacht habe. Aber ich habe immer noch ein Problem.Der Command lässt sich über

    VB.NET-Quellcode

    1. Process.Start("C:\Test\test.bat")
    nicht ausführen (Error: Could not create the Java Virutal Machine.) aber wenn ich hingehe und es von hand doppelklicke dann funktioniert es.

    Was könnte das sein??
    Tauchen die zeichen in der Batch auf wenn du sie im Texteditor öffnest ? Dann müsste cmd eigentlich einen Fehler geben irgendwas mit falscher Parameter.
    Du kannst Prozesse auch direkt mit Parametern aufrufen

    VB.NET-Quellcode

    1. Process.StartInfo.Arguments = "Parameter"
    Wenn ich die .bat Datei zb. mit einem Editor Editiere sind diese Zeichen nicht da.

    Sobald ich aber die .Bat Datei ausführe sind die Zeichen auf einmal da.

    Sprich im Editor:
    javaw.exe -Xms2048m -Xmx2048m -cp "..."
    pause

    Und wenn ich die .bat nun Ausführe:


    ╗┐ javaw.exe -Xms2048m -Xmx2048m -cp "..."
    pause


    Das Führt dazu, dass der Command nicht korrekt funktioniert.

    Nun habe ich einen Umbruch reingemacht. Und wenn ich die .bat jetzt Ausführe:

    ╗┐
    javaw.exe -Xms2048m -Xmx2048m -cp "..."
    pause

    So funktioniert die .bat wenn ich sie ausführe aber wenn VB sie so ausführt gibt's wieder einen Fehler.

    Ich werde nun Mal Process.Start("javaw.exe", -Xms2048....) versuchen.
    Hast du den Java Command selbst getippt in VB oder nur dort eingefügt? Was sein kann, nämlich Sonderzeichen VOR dem String die du mitkopiert hast, die aber das Codefenster nicht anzeigt.
    Also Lösche die ganze Command Zeile nochmal und TIPPE sie neu und lasse vorallem die Klammern darum weg, wieso ein String einklammern?? Sinn??

    @EDR: Hat er doch gesagt, in der IDE sind sie nicht da, wenn er den String Command speichert und dann in einem Editor ansieht sind die Zeichen da.
    Nochmal von Vorne...

    Wenn ich die .bat Datei mit dem Editor öffne sind die Zeichen nicht da.

    Führe ich die .bat Datei aus öffnet sich ja ein CMD Fenster. Und in diesem Fenster tauchen die Zeichen dann auf...








    //edit:

    @Dojo
    Ja, den Befehl habe ich von Hand eingegeben. Ich werde es nochmals von Hand versuchen.
    sieht so aus, als ob der Bat-Compiler beim Einlesen einer Bat-Datei unfähig ist, sich dem Encoding anzupassen, in dem die Datei erstellt wurde.
    Scheinbar ist der Bat-Reader in dieser Hinsicht dümmer als ein Editor, der selbstverständlich Encoding-Angaben (eben diese komischen Zeichen) richtig interpretiert.

    Beim Schreiben der Bat mal Encoding.Default angeben
    Kann es sein, sdass das die BOM-Zeichen sind (Byte Order Mark), ob HL- oder LH-Unicode Sortierung?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Das Problem konnte gelöst werden dank.



    VB.NET-Quellcode

    1. My.Computer.FileSystem.WriteAllText(Path, Command, False, System.Text.Encoding.Default)


    Die Zeichen sind nicht länger da.

    Jedoch lässt sich das ding weder Via

    VB.NET-Quellcode

    1. Process.Start(javaw.exe, "-Xms...")
    noch via

    VB.NET-Quellcode

    1. Process.Start("C:\Test\test.bat")
    starten. Ich werde dort durch wohl noch etwas forschung betreiben müssen.

    Vielen Dank für eure Hilfe!

    ~Thema als Erledigt markiert.