Problem mit externem Programm

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von lordknoblauch.

    Problem mit externem Programm

    Ja, ich habe mal wieder ein Problem...(wie so oft ;D) und zwar startet mein Programm ein batch file, welches eine bestimmte Datei kompiliert und anschließend verschiebt, einige Dateien löscht usw.
    Allerdings braucht der Compiler oft länger als das Programm selbst. Somit entstehen natürlich Fehler beim verschieben und löschen der Dateien.(Auf meinem PC, der schneller ist als mancher standard PC funktionierts noch, auf anderen schon nicht mehr und vorallem wenn der User längere Codeschnippsel schreibt wirds kritisch, da der Compiler immer länger braucht)

    Danach noch eine weitere Frage, ich habe dann ja für kurze Zeit eine Konsole offen, kann ich von dort irgendwie den Text auslesen oder so? Sodass ich vom Compiler die Meldungen verwerten kann?

    lg
    du kannst die Ausgabe in die Console umleiten mit
    >>
    dann hast du eine Datei die du dann wiederum auslesen kannst.
    Schau dir das Beispiel an. Dort mache ich eine Batch mit der ich einen einfachen Robocopy Befehl nutze.
    Jetzt habe ich das so erweitert, das ich eine Protokol als Datei erhalte.
    Das könnte was für dich sein.

    Quellcode

    1. @echo off
    2. @set Std=%time:~-11,2%
    3. @set Min=%time:~-8,2%
    4. @set Dpunkt=:
    5. @set Zeit=%Std%%Dpunkt%%Min%
    6. @set gesum= um :
    7. @set monat=%date:~-7,2%
    8. @set jahr=%date:~-4%
    9. @set tag=%date:~-10,2%
    10. @set wan=%tag%%monat%%jahr%
    11. @set gesAm=Gestartet am :
    12. @set punkt=.
    13. @echo on
    14. @echo Verzeichnis -! AllInOne !- wird gesichert, bitte warten. Protokoll wird erstellt.
    15. @echo off
    16. @echo %gesAm%%tag%%punkt%%monat%%punkt%%jahr%%gesum%%Zeit% >C:\AllInOne\BackUpMyComputer\AllInOne.%wan%
    17. @robocopy C:\allinone Z:\Datensicherung\AllInOne /MIR /R:1 /W:5 /XF NTUSER*.* /XD *Recycl*.* /XD *Papierkorb*.* >>C:\RoboCopyDateien\AllInOne.%wan%
    ich hab hier 'n kleines tool mit dem man die standard windows befehle verarbeiten kann. sprich: ipconfig usw.

    dabei wird die cmd.exe gestartet, ihr wird ein wert übergeben und das ergebnis dann wiederum ausgelesen und in eine richtextbox geschrieben.

    ich hoffe das hilft weiter.

    VB.NET-Quellcode

    1. RichTextBox1.Clear()
    2. Dim procInfo As New ProcessStartInfo()
    3. With procInfo
    4. .FileName = "cmd.exe"
    5. .UseShellExecute = False
    6. .CreateNoWindow = True
    7. .Arguments = "/D /c " & TextBox1.Text
    8. .RedirectStandardOutput = True
    9. End With
    10. Dim proc As New Process()
    11. With proc
    12. .EnableRaisingEvents = True
    13. .StartInfo = procInfo
    14. .Start()
    15. End With
    16. Dim sr As IO.StreamReader = proc.StandardOutput
    17. While sr.EndOfStream = False
    18. RichTextBox1.AppendText(sr.ReadLine & vbCrLf)
    19. Application.DoEvents()
    20. End While