Dos mit mehreren Zeilen

  • Hallo,
    ich möchte gerne eine batch datei in ein Autoit skript einbinden.
    dazu benutze ich einfach den Run befehl.
    Doch nun würde ich gerne das gleiche mit mehreren Zeilen machen, zb um ein pause hinzuzufügen oder so.

    Beispiel:

    Code
    start notepad
    pause


    Mit @CR oder @CRLF hatte ich keinen erfolg.
    Vielen Dank im Vorraus

    gruß mpsikorski :)

    Einmal editiert, zuletzt von mpsikorski (18. Februar 2012 um 21:45)

    • Offizieller Beitrag

    Es ist eigentlich etwas widersinnig, mit AutoIt Batchdateien aufzurufen. Das sind die vielzitierten "Perlen vor die Säue.." :D
    Portiere deine Batch zu AutoIt und du bist aller Sorgen ledig.

    Unabhängig davon: Um auch Pausen zu berücksichtigen musst du abwarten bis ein Batchaufruf abgearbeitet wurde. Dazu nimmst du nicht Run() sondern

    [autoit]

    RunWait()

    [/autoit]

    .

  • ich glaube ich versteh die Frage noch nicht ganz aber ich hab jetzt verstanden das due eine Batch Datei aus deinem AutoIt Programm starten willst..

    Ich würde als Newbie das so machen:

    Spoiler anzeigen
    [autoit]

    $Filename_1 = FileOpen ("Hallo.bat", 2)
    FileWriteLine ($Filename_1, "@echo off"
    FileWriteLine ($Filename_1, "echo Hallo")
    FileWriteLine ($Filename_1, "echo Tschüss!")
    FileWriteLine ($Filename_1, "Pause")
    FileClose($Filename_1)
    RunWait ($Filename_1)
    Sleep (1000)
    FileDelete ( @ScriptDir & '\' & $Filename_1)

    [/autoit]

    Edit: Okay nachträglich verstehe ich natürlich was du wolltest und das war von BugFix schon gut beantwortet..
    Aber ich bin trotzdem der Meinung, dass, wenn man schon AutoIt und Batch verbindet, die Batches erst erstellt werden sollten. Die liegen sonst immer im Weg

  • Danke für eure Antworten!

    BugFix
    Das was ich mit den Batches vor habe kann ich leider nicht direkt autoittich ;) machen.
    Sry meinte auch RunWait bzw. soll das später mit einer Progressbar und _RunDos gemacht werden... ;)


    @Kyrlo
    1. möchte ich nicht die Batch datei offen vorliegen haben, das soll implementiert werden und 2. möchte ich kein Dos Fenster sehen... (wegen Progressbar...)
    Danke trotzdem ;)
    EDIT: Hab mir das nochmal genauer angeguckt... ist echt super merk ich!


    Einmal editiert, zuletzt von mpsikorski (18. Februar 2012 um 21:52)

  • ich würde nur gerne einfach wissen wie das geht mit einer 2. Zeile.
    egal ob ichs umschreiben könnte ;)
    wisst ihr denn wie man eine zweite zeile macht?

  • Dann zeig doch mal den Code, wie du es versucht hast. Willst du den Batchcode in eine temporäre Batch schreiben und diese dann ausführen? So richtig schlau werde ich da nicht mit.

    Spoiler anzeigen
    Code
    :download
    
    
    rtmpdump.exe -o "de-1.mp4" -r "rtmpe://cp75298.edgefcs.net/ondemand/mtviestor/_!/intlod/southpark/video/Deutsche/Season_15/1501/acts/sp_1501_act1_DEU_DEU_1280x720_1200.mp4" -W "http://media.mtvnservices.com/player/prime/mediaplayerprime.1.10.7.swf?uri=mgid:cms:content:southparkstudios.com:388942&type=network&ref=www.southparkstudios.com&geo=US&group=entertainment&&CONFIG_URL=http%3a%2f%2fmedia.mtvnservices.com%2fpmt%2fe1%2fplayers%2fmgid%3acms%3acontent%3asouthparkstudios.com%3a%2fcontext2%2fconfig.xml%3furi%3dmgid%3acms%3acontent%3asouthparkstudios.com%3a388942%26type%3dnetwork%26ref%3dwww.southparkstudios.com%26geo%3dUS%26group%3dentertainment%26" --resume --skip 1
    
    
    :downloadIf %errorlevel% gtr 0 goto download


    Das ist ein Part einer South Park Folge... und da brauch ich mehrere Zeilen!

    Danke für die Hilfe ;)

    MPSikorski

    • Offizieller Beitrag

    Das ist die Batch, ich wollte sehen, mit welchem AutoIt-Code du bisher probiert hast. Ich weiß noch immer nicht wie du das haben willst: Batch temporär erstellen und dann aufrufen?
    Habe ich bereits vorhin nachgefragt!
    Wäre schön, wenn du auf Rückfragen auch antwortest, sonst gehen dir sicher die Helfenden bald aus. :wacko:

  • Das ist die Batch, ich wollte sehen, mit welchem AutoIt-Code du bisher probiert hast. Ich weiß noch immer nicht wie du das haben willst: Batch temporär erstellen und dann aufrufen?
    Habe ich bereits vorhin nachgefragt!
    Wäre schön, wenn du auf Rückfragen auch antwortest, sonst gehen dir sicher die Helfenden bald aus. :wacko:

    Also wie ich bereits am Anfang sagte, ich möchte keine batch datei erstellen (auch nicht temporär) und möchte einfach nur nen Aufruf mit Runwait starten.
    Das Problem ist eben, das ich mehrere Zeilen brauche!
    Oder geht das nicht? ich wollte dann nämlich einfach die Zahlen für Staffel und Folge in dem rtmpdump code durch variablen ersetzen, das geht ja nicht wenn man eine externe Batch erstellt... (ich hoffe du verstehst was ich meine)

    also ich habs mit autoit so probiert (funzt überhaupt nicht):

    • Offizieller Beitrag

    Portiere deine Batch zu AutoIt und du bist aller Sorgen ledig.

    Das was ich mit den Batches vor habe kann ich leider nicht direkt autoittich ;) machen.

    ich möchte was rippen mit rtmpdump und dann konvertieren mit ffmpeg und da brauch ich dos...

    Also wie ich bereits am Anfang sagte, ich möchte keine batch datei erstellen (auch nicht temporär) und möchte einfach nur nen Aufruf mit Runwait starten.


    Vielleicht solltest du dich einfach mal entscheiden, was du willst?
    - Geht nicht mit AutoIt, brauche Batch
    - will keine Batch erstellen, nur Befehle ausführen

    Also überlege noch mal was du willst. Und erst, wenn du auch wirklich sicher weißt, was das ist, sage Bescheid.

  • Also ich weiß was ich will!
    Ich möchte KEINE BATCH erstellen. Mit dem Befehl

    [autoit]

    RunWait()

    [/autoit]


    geht das ja im Prinzip. Nur kann ich keine Zeilenumbrüche machen! Und meine Frage war einfach nur, ob ich das einbinden kann... geht ja anscheinend nicht!
    Trotzdem danke.
    Ich mach das dann einfach mit der Temporären Batch....
    Nunja schönen Abend noch :rock:

  • Hi,
    ich habe beim Diagonal-Lesen nicht erkennen können welch antiquiertes System du benutzt :rofl:
    Gib einfach mal in einer Befehlszeile(oder wie immer du die DosShell nennst) folgende Zeile ein:

    [autoit]

    Echo Antwort & Echo auf alle Fragen & Echo. & Echo 42

    [/autoit]


    Damit sollte es möglich sein OHNE (temporäre) Batch-Datei ein paar Befehle auszuführen..
    ..ob und wie du das dann in AutoIt übernimmst ist deine Sache ;)
    [Edit]
    Ist egtl. derselbe Tipp, wie der von Hakeem..
    (kommt vom Diagonal-Lesen :whistling:
    Gruß
    ytwinky

    (Ich) benutze stets die aktuelle (Beta) und SciTE..

  • Auch wenn der Thread inzwischen auf gelöst gesetzt ist, hier noch ein Vorschlag, der im Prinzip das ist was schon BugFix vorgeschlagen hat

    Spoiler anzeigen
    [autoit]

    $url="rtmpe://cp75298.edgefcs.net/ondemand/mtviestor/_!/intlod/southpark/video/Deutsche/Season_15/1501/acts/sp_1501_act1_DEU_DEU_1280x720_1200.mp4"
    $swfurl="http://media.mtvnservices.com/player/prime/mediaplayerprime.1.10.7.swf?uri=mgid:cms:content:southparkstudios.com:388942&type=network&ref=www.southparkstudios.com&geo=US&group=entertainment&&CONFIG_URL=http%3a%2f%2fmedia.mtvnservices.com%2fpmt%2fe1%2fplayers%2fmgid%3acms%3acontent%3asouthparkstudios.com%3a%2fcontext2%2fconfig.xml%3furi%3dmgid%3acms%3acontent%3asouthparkstudios.com%3a388942%26type%3dnetwork%26ref%3dwww.southparkstudios.com%26geo%3dUS%26group%3dentertainment%26"
    $x=1 ; richtig cool wird es erst mit arrays...

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

    for $n=1 to $x
    $output="file" & $n & ".mp4"
    $progstring="rtmpdump.exe -o " & $output & " -r " & $url & " -W " & $swfurl & " --resume --skip 1"
    $progreturn=5 ; da rtmpdump exitcodes 0,1 oder 2 liefert muss hier irgendein Wert > 2 stehen
    if FileExists(".\" & $output) Then
    $deletereturn = FileDelete(".\" & $output) ; falls rtmpdump z.b. bei einem vorherigen versuch mit einem fehler abbricht, wurde eine file erstellt welches oft weitere erfolgreiche aufrufe verhindert, also löschen.
    EndIf
    SetError(0) ; jemand mit mehr Erfahrung wird sagen können ob das tatsächlich nötig ist.
    while $progreturn <> 0 AND @error = 0 ; AND weil rtmpdump bei erfolg und RunWait bei misserfolg "0" ausgeben, teste ich zusätzlich @error um sicher zu gehen.
    $progreturn = RunWait($progstring)
    WEnd
    ; hier noch den programmaufruf für das konvertieren reinpacken...
    ; dann $swfurl und $url neu setzen. am einfachsten aus einem - vorher erstellten - array auslesen.
    Next

    [/autoit]

    Denke das ist, was der OP letztendlich wollte bevor er sich zwischen loslassen und festklammern an Batch verheddert hat weil er zwar keine Batch wollte aber dennoch an deren Syntax und den beliebten Einsprungmarken festhielt...