Do While Schleife fehler

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Trade.

    Do While Schleife fehler

    Hey Leute ^^

    Ich weiß, der Titel klingt blöd, aber ich weiß nicht wie ich ihn sonst nennen sollte :D

    Ich habe diesen Code hier:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim Stream As System.IO.StreamWriter = System.IO.File.CreateText(TempPath & "\Programmupdates\Installer.bat")
    2. Stream.Close()
    3. Me.Invoke(New Invoke.TextAppend(AddressOf Invoke_TextAppend), "@Echo off" & vbNewLine,
    4. TempPath & "\Programmupdates\Installer.bat")
    5. Dim iii As Integer = 0
    6. Dim iiii As Integer = 0
    7. Dim Test1 As Integer = ExenNamenZahl.Length - 1
    8. Dim Test2 As Integer = ParameterNummer.Length - 1
    9. Do While iii <= Test1
    10. If ExenNamenZahl(iii) = Nothing Then
    11. iii = 100
    12. End If
    13. Do While iiii <= Test2
    14. If ParameterNummer(iiii) = Nothing Then
    15. MsgBox(ParameterNummer(iiii))
    16. iiii = 100
    17. Else
    18. If ExenNamenZahl(iii) = ParameterNummer(iiii) Then
    19. Me.Invoke(New Invoke.TextAppend(AddressOf Invoke_TextAppend), "Start /wait " & ExenNamen(iii).ToString & _
    20. " " & _
    21. Parameter(iiii).ToString & _
    22. vbNewLine,
    23. TempPath & "\Programmupdates\Installer.bat")
    24. End If
    25. End If
    26. iiii += 1
    27. Loop
    28. iii += 1
    29. Loop


    Ich habe folgendes vor. Ich habe Exen in einen Verzeichniss mit Zahlen am Anfang stehend. 1-10. VB ließt aber 10, 1, 2, 3... . Damit man Programme hinzufügen kann wie man will, ohne das Programm zu bearbeiten will ich das so lösen. Dann habe ich eine Textdatei mit 10 Zeilen. Jede Zeile hat auch wieder eine Zahl davor stehen. diese Zeilen sind Parameter für die Exen. Jetzt habe ich vier Variablen, um die richtige Zeile für die richtige exe zu finden. "Exenname", "ExenNameZahl", "Parameter" und "ParameterZahl". Was die Variablen beinhalten ergibt sich ja denke ich ^^. Mein Problem ist nun das ich mit dem Code nicht für jede Exe eine Zeile + Parameter habe sonder nur das:

    @Echo off
    Start /wait 10_jre-8u51-windows-i586.exe Test10

    Das Wäre dann bei iii = 0 und bei iiii = 9. Also erste Exe(Nummer 10) und 10. Zeile(Nummer 9).
    Ist das so verständlich? Wenn nicht vesuche ich es gerne nochmal :D


    Weiß da vielleicht jemand eine Lösung? Danke ^^
    #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 :!:
    Hi, ich würde dir gerne helfen, aber ich stehe auf dem Schlauch. Ich habe keine Vorstellung was du da versuchst.
    Welchen Nutzen hat die Textdatei?
    Wie unterscheiden sich die ".exe"-Dateien?

    Ist das eine Versionierung?
    Wenn es immer das gleiche Programm (nur mit anderem Erstelldatum) ist bietet sich vielleicht eine Überarbeitung an die immer die Neuste Datei öffnen die einen bestimmten Namen enthält:

    Quellcode

    1. @echo off
    2. P:
    3. cd P:\Pfad\
    4. for /F "tokens=*" %%f in ('dir /B /O:D FesterTeilDesDateinamens*.exe') do (set Neueste_Datei=%%f)
    5. start %Neueste_Datei%
    6. echo.
    7. echo AgentTool wird gestartet
    8. echo.
    9. exit 0
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Naja in der Textdatei stehen Parameter mit Zahlen davor. Die Zahlen sind für die Exen, welche auch Zahlen davor haben. Damit ich zuordnen kann welcher Parameter welcher Exe gehört. Ich lasse alle Zeilen in ein Array einlesen und in ein anderes Array alle Zahlen des Arrays. Das ich weiß Array1(0) gehört Zeile eins. Das selbe dann mit den Exen. Ich lasse in den While Schleifen einfach jede Exe mit jeder Zeile vergleich, bis die Zahlen beider übereinstimmen. Dann lass ich beides in eine Batch schreiben ^^

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

    nawiat schrieb:

    wäre schön wenn mir jemand einfach meine Frage beantworten kann ohne links und unpassende Kommentare. Danke
    Ich wollte schon einen etwas längeren, informativen Beitrag verfassen, aber so kann ich mir das ja sparen. Schade eigentlich. Aber dennoch: Viel Gück. Viel Glück, dass der Aufprall an der Wand nicht so schmerzhaft bzw. teuer wird.

    PS: Ich meine das in keinster Weise beleidigend bzw. herabwürdigend. Ich wollte nur diesen Hinweis dalassen.
    Mit freundlichen Grüßen,
    Thunderbolt
    Ich verstehe die ersten beiden Codezeilen nicht... Du öffnest einen IO.StreamWriter mit IO.File.CreateText() und schließt ihn direkt wieder. Was soll das bezwecken?

    nawiat schrieb:

    Ich bin alles, aber kein Anfänger xD

    Dann darf ich dir wahrscheinlich auch nicht den Rat geben statt TempPath & "\Programmupdates\Installer.bat" einfach die IO.Path-Klasse zu verwenden und Pfade so:

    VB.NET-Quellcode

    1. Dim destinationPath = IO.Path.Combine(TempPath, "Programmupdates\Installer.bat")

    zusammenzuführen.
    Da du alles, aber kein Anfänger bist, darf ich dir auch nicht vorschlagen MessageBox.Show() zu benutzen statt dem veralteten MsgBox().
    Nein, darf ich nicht? Gut dann mach ich es auch nicht.
    Also wenn Du unsere Posts, die Dich vor einem riesen Unglück bewahren sollen, als unnötig, unpassend und nicht hilfreich abstempelst, obwohl Du nicht mal den Link angeklickt und den entsprechenden Thread durchgelesen bzw. die Problematik verstanden hast, dann kann man Dir nicht helfen.
    Allerdings widersprichst Du Dir damit auch selbst bezüglich Deiner obigen Aussage. ;)

    Davon abgesehen, ist das mit Batch komplett fehl am Platz für einen Updater. Zudem ist die Versionierung unkomfortabel und der Code müsste stark verbessert werden. @Fortender hat mal ein paar Sachen angesprochen.
    Ansonsten einfach Binaries runterladen und ausführen, das ist sicherheitskritisch und da müsste in Deinem Programm eigentlich ein richtig fetter Warnhinweis hin, damit der Nutzer informiert ist.

    Da Du Dich jedoch nur für die Lösung interessierst und alles andere in Deinen Augen unwichtig ist, wünsche ich Dir auch viel Glück, dass Du nicht in die entsprechende Situation kommst. Das ist übrigens ernst gemeint, denn wir prädigen das nicht, weil uns langweilig ist. Die Leute von puush kennen das und die waren sicherlich alles andere als begeistert.

    Das ist übrigens auch komplett gut gemeint, aber ich muss nun mal die Tatsachen ansprechen. ;)

    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 :!: