RunWait Batch

  • Hey,

    ich würde gern eine von meinem Autoit script erstelle .bat datei starten, warten bis sie fertig ist und dann den Script fortführen, habe dies mit

    [autoit]

    RunWait("batch.bat","",@SW_MINIMIZE)

    [/autoit]

    versucht, jedoch startet er die .bat erst garnicht.. die batch.bat liegt im selben verzeichnis wie das script
    In meiner .bat nutze ich nur ein batchbefehl für TextAloud, ansonsten steht nur das @echo on oben drüber.

    Danke für die Hilfe
    Toto2468

  • Vielleicht liegst es daran, das du als Workingdir "" angibst.
    Ersetz das mal mit @ScriptDir (o.Ä.)
    Und das gleiche am besten auch mit dem 1. Parameter, sprich so:

    [autoit]

    RunWait(@ScriptDir & "\batch.bat", @ScriptDir, @SW_MINIMIZE)

    [/autoit]

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • Wenn du deine Scripte nicht zeigst kann man dir schlecht helfen.

    Ps. Runwait wartet darauf bis das Programm gestartet ist, und nicht bis die Datei fertig geschrieben wurde.

    Sind TV-Quizfragen zu einfach? A) Ja B) Harry Potter

    Spoiler anzeigen

    Ich gebe zu dieser Post hat wahrscheinlich nicht viel geholfen,
    aber ich versuche wenigstens zu helfen :rolleyes:

  • Warum nutzt du denn überhaupt ein Batch script und machst nicht direkt alles mit autoit?
    Das wäre doch leichter.

    Ps. Runwait wartet darauf bis das Programm gestartet ist, und nicht bis die Datei fertig geschrieben wurde.


    Falsch. Runwait wartet bis das gestartete Program wieder beendet ist....

  • Moin!

    Ich habe zZt auch Probleme mit dem Befehl "Run". Die Ursache scheint das Arbeitsverzeichnis zu sein. Hab schon sämtliche Variationen versucht, aber alle ohne Erfolg.
    Wenn ich dagegen "_RunDos" nehme wird der CMD Befehl klaglos ausgeführt...

    In deinem Fall solltest du also mal folgendes versuchen:

    [autoit]

    #include <Process.au3>

    [/autoit][autoit][/autoit][autoit]

    _RunDos("batch.bat")
    ;~ oder
    _RunDos(@ScriptDir & "\batch.bat")

    [/autoit]


    Die Command Line wird automatisch versteckt, es wird also kein Parameter wie @SW_MINIMIZE oder @SW_HIDE benötigt. Ausserdem wartet _RunDos ebenfalls auf Beendigung des Befehles...

    @Experten: Könnt ihr mir erklären, wie das (zumindest in meinem Fall) funktioniert?

    *edit*
    Ich hab mir jetzt mal die Process.au3 UDF angesehen (wieso erst jetzt. weiß ich auch nicht...) und die ruft lediglich folgenden Befehl auf:

    [autoit]

    RunWait(@ComSpec & " /C " & $sCommand, "", @SW_HIDE)
    ;~ also in deinem Fall:
    RunWait(@ComSpec & " /C " & @ScriptDir & "\batch.bat", "", @SW_HIDE)

    [/autoit]


    Bei mir funktionierts logischerweise genauso wie bei _RunDos...

    *edit²*
    Kommando zurück! Mit Batch Dateien funktioniert das ganze leider nicht. In meinem Fall hatte ich einen "echten DOS Befehl" ausgeführt. Entschuldige meine Verwirrung ;(

    Unter diesen Umständen muss ich Schnitzel recht geben, der empfiehlt, TextAloud direkt mit AutoIt anzusteuern, was kein Problem darstellen sollte.
    Mit der Command Line Version von TextAloud führt folgendes bei mir zum Erfolg:

    [autoit]

    ShellExecuteWait($PfadZumProgramm & '\TACommand.exe', '/text="Hello, this is Mike speaking. Have a great day." /tofile="AudioFile1.mp3" /voice="AT&T Mike16"', '', '', @SW_HIDE)

    [/autoit]


    Sanfte Grüße :D

  • Dann halt die Prozess ID ermitteln von dem Prg was in der Batchdatei angeschoben wird und dann Processwait nutzen.
    Wobei ich auf Batchfateien ganz verzichten würde wenn man eh schon Autoit nutz dann muss man sich damit doch nicht rumärgern.

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o