von VB aufgerufene Batch -> "Ergebnisvariable" zurück an VB übergeben

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von stevez.

    von VB aufgerufene Batch -> "Ergebnisvariable" zurück an VB übergeben

    Servus, oben beschriebenes Problem. So kann man eine Zahl übergeben, ich benötige allerdings unbedingt ebenfalls die Punkte. Nachheriges Hinzufügen der Punkte ist nicht möglich, da die Punktabstände immer variieren. Einzige Zwischenlösung wäre, die Version in dreierpacks zu schreiben:

    72.0.0.2 --> 072000000002 --> ExitCode Übergabe --> VB 3erBlocks 0er bis auf eine entfernen --> 72.0.0.2
    --> nur wie würde ich das in Batch programmiert bekommen (String immer bis zum 1. Punkt abschneiden)?

    Weitere Übergabemöglichkeit wäre eine tmp-Datei, was ich bereits habe, aber unschön finde, daher will ich das direkt machen.

    Quellcode

    1. @echo off
    2. set XTBLA=72.0.0.2
    3. exit %XTBLA%


    --> hierbei bekomme ich in VB über das Auslesen des Exitcodes einfach nur "72" raus.

    LG
    Der System-Rückgabewert von ausführbaren Dateien ist stets ein Integer. ("Exe has excited with Code 0x80001234" oder so).
    Auf gar keinen Fall bekommst Du einen String zurück.
    Möglicherweise wird das, was Dir vorschwebt, von einem Programm aus dieser Zahl generiert.
    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!
    @Schalterschorsch
    wie oben bereits steht, läuft es momentan so. Das möchte ich ja umgehen.

    @ErfinderDesRades
    Es muss leider ebenfalls ein Batch-Log generiert werden (geschieht in der Batch). Kann ich ja aber auch in VB machen. Es läuft soweit alles. Was einfacher wäre: gibt es eine Möglichkeit, die LETZTE Zeile in einem String (in dem der gesamte Batch-Output eingelesen wurde) zu isolieren?

    Edit: passt das so?

    VB.NET-Quellcode

    1. Dim strText() As String = BatchLog.Split(vbNewLine)
    2. MsgBox(strText(strText.Length - 2))

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „stevez“ ()

    Das hättest Du schneller probiert. :D
    Falls die Log-Datei auf Platte steht, kannst Du sie auch mit System.IO.File.ReadAllLines(DATEI_NAME) einlesen und da den letzten Index verwenden.
    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!