1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. ahe

Beiträge von ahe

  • EXIT Code von Batch mit AutoIT verarbeiten

    • ahe
    • 12. April 2008 um 00:01

    Vielen Dank Bernd. :thumbup:
    (auch Dank an progandy und mega)

    Ich war schon am Verzweifeln, da in allen Forenbeiträgen (auch den englischen) die Lösung identisch war, aber bei mir nicht funktionierte... (wenn man halt die Kommandozeilen-Online-Hilfe nicht richtig liest... :) :

    Code
    exit /?
    Quits the CMD.EXE program (command interpreter) or the current batch script.
    
    
    EXIT [/B] [exitCode]
    /B
    specifies to exit the current batch script instead of CMD.EXE.  
    If executed from outside a batch script, it will quit CMD.EXE
    
    
    exitCode   
    specifies a numeric number.  if /B is specified, sets ERRORLEVEL that number.  
    If quitting CMD.EXE, sets the process exit code with that number.
    Alles anzeigen


    Ich habe aber auch eben eine Alternative gefunden, die zwar jetzt überflüssig ist, aber vielleicht noch für andere Zwecke gebraucht werden kann.
    Eine EXE erstellen mit dem Code

    [autoit]

    Exit (1)

    [/autoit]


    und anschließend in der Batch an dem entsprechenden Ausstiegspunkt aufrufen.
    (Idee kam u. a. von hier: http://www.autoitscript.com/forum/index.php?showtopic=6348&hl=errorlevel )

    Jetzt änder' ich aber erst einmal meine Batches... :)

    mfg
    Axel

  • EXIT Code von Batch mit AutoIT verarbeiten

    • ahe
    • 11. April 2008 um 15:53

    Gleicher Effekt...

    Code
    $code = ShellExecuteWait(@TempDir & "\ldms_packages\test\test.cmd")
    MsgBox(0, "Der Error-Code", $code)
    
    
    Exit $code

    Ich habe spasseshalber den Exit Code in der Batch manuell verändert (sowohl negative, als auch positive Zahl), ohne Effekt. Der Wert ist immer "0".

    mfg
    Axel

  • EXIT Code von Batch mit AutoIT verarbeiten

    • ahe
    • 11. April 2008 um 15:34

    Hallo progandy,

    danke für den Hinweis, aber der Exit Code immer noch 0 anstelle von 1.

    Der folgende Source liefert mit die "0" zurück, anstelle von "1":

    Code
    $code = RunWait(@TempDir & "\ldms_packages\test\test.cmd")
    MsgBox(1, "Der Error-Code", $code)
    Exit $code

    mfg
    Axel

  • EXIT Code von Batch mit AutoIT verarbeiten

    • ahe
    • 11. April 2008 um 15:12

    Hallo Mega,

    wenn ich meine Batch mit Runwait starte sehe ich im SciTE4AutoIt3 im Logfenster die folgenden Zeilen:

    Code
    >"C:\Program Files\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "d:\autoittest.au3"
    >Exit code: 0Time: 0.662

    In meinem Logfile steht als Errorcode 1!

    Jetzt habe ich daraus eine EXE gemacht und diese verteilt. Der Exitcode wird nicht "durchgereicht"...

    Der "Source":

    Code
    RunWait("c:\temp\LDMS_Packages\Test\test.cmd")

    Ach ja, wie kann ich die Umgebungsvariable %temp%, oder auch andere, verwenden? Wenn ich %temp% anstelle von c:\temp verwende, bekomme ich einen Fehler:

    Code
    >"C:\Program Files\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "d:\autoittest.au3"	
    D:\autoittest.au3 (1) : ==> Unable to execute the external program.: 
    RunWait("%temp%\LDMS_Packages\Test\test.cmd") 
    Das System kann die angegebene Datei nicht finden.

    mfg
    Axel

  • EXIT Code von Batch mit AutoIT verarbeiten

    • ahe
    • 11. April 2008 um 13:59

    Hallo,

    ich kenne mich mit AutoIt derzeit noch überhaupt nicht aus und habe eine kleine Frage.

    Ich verteile diverse Softwarepakete über Batches (CMDs). Diese Batches liefern einen Exit/Error-Code an ein übergeordnetes System (LANDesk), um Auswertungen zu machen oder einfach zu sehen, ob der Installationstask auch auf allen Rechnern durchlaufen wurde.

    Damit nicht jeder an den Source-Dateien der Batches (die Programmdateien und die Batch selbst) herumfummeln kann möchte ich daraus eine EXE machen, die aber weiterhin die Exit/Error-Codes sendet.

    Jetzt meine Frage: Ist es möglich mit Hilfe von AutoIt einen Exit-Code einer Batch "aufzufangen" und weiterzuleiten?
    (Ich weiss, ich könnte auch alle Batche nach AutoIt konvertieren, allerdings wäre ich dann noch ein paar Monate beschäftigt und es geht wie immer um eine Lösung ASAP... 8|

    Hier ist ein kleines Batchbeispiel, es soll ein Verzeichnis erstellen, wenn es schon da ist bringt es einen Fehler und dieser soll dann als Exit-Code an das übergeordnete System geschickt werden.
    Die Erstellung der Log-datei dient nur dem Test... :)
    Der Befehl %LDDIR%\sdclient.exe" /msg= sendet eine Meldung an LANDesk, der abschließende Befehl EXIT /B %ResultCode% sendet den Errorcode an LANDesk (0 bedeutet "erfolgreich", alles andere bedeuted Fehler)

    Code
    @ECHO OFF
    set "LDDIR=%ProgramFiles%\LANDesk\LDClient"
    
    
    :: This batch file sends ERRORLEVEL to the Core Server.
    :: Run sdclient.exe to result in ERRORLEVEL being 0
    md %temp%\dideldum 2>&1
    :: test
    set "ResultCode=%ERRORLEVEL%"
    echo The errorcode is: %ResultCode% >> %temp%\packages\test.log
    
    
    if "%ResultCode%"=="0" (
    "%LDDIR%\sdclient.exe" /msg="dideldum created with result code %ResultCode%."
     echo ok: %ResultCode% >> %temp%\test.log
    goto END
    ) ELSE ( 
    "%LDDIR%\sdclient.exe" /msg="diedeldum creation failed with result code %ResultCode%. Exiting"
     echo not ok: %ResultCode% >> %temp%\test.log
    )
    :END
    EXIT /B %ResultCode%
    Alles anzeigen

    Ach ja, die Batch funktioniert so wie sie ist, nur wenn ich sie mit Hilfe von Tools, wie 7zip, Batch2Exe oder auch Packagebuilder, zu einer EXE mache, werden die Exitcodes nicht weitergeleitet.

    mfg
    Axel

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™