EXE FIles aus Ordner Starten

  • Guten Morgen,

    ich bin auf diesem Gebiet ein Neuling, das schon einmal vorab!

    Ich hab folgendes. In einem Ordner befinden sich ca.30 *.exe Files die nacheinander gestartet werden sollen.
    Das ausführen einzelner Files mit evtl. Parameter übergabe und installation als ADMIN funktioniert!

    Jedoch würde ich gerne Automatisiert alle 30 Dateien nacheinander starten lassen wollen die als admin gestartet werden und zusätzlich noch parameter wie "/norestart" enthalten.

    Ich könnte natürlich hingehen und alle Dateien einzeln angeben aber das ist, naja nicht schön.


    Vielen Dank schon einmal für eure Hilfe

    3 Mal editiert, zuletzt von c.s.pieker (10. Januar 2012 um 15:59)

  • Also so würde es gehen:

    [autoit]

    $Dir = @ScriptDir
    $_Parameter = '/norestart'
    $File = FileFindFirstFile($Dir & '\*.exe')
    If @error Then
    MsgBox(16, 'Error', 'No *.exe Files found in "' & $Dir & '".')
    Exit
    EndIf
    Do
    $Program = FileFindNextFile($File)
    If @error Then
    ExitLoop
    EndIf
    If $Program = 'whatever.exe' Then
    $Parameter = '/blah'
    ElseIf $Program = '...' Then
    $Parameter = '...'
    Else
    $Parameter = $_Parameter
    EndIf
    RunWait($Dir & '\' & $Program & ' ' & $Parameter)
    If Not @error Then
    FileWriteLine('install.log', @MON & '/' & @MDAY & '/' & @YEAR & ' ' & @HOUR & ':' & @MIN & ':' & @SEC & @TAB & $Program & 'successfully installed.')
    EndIf
    Until @error
    FileClose($File)
    MsgBox(64, 'Success', 'Job done.')

    [/autoit]


    Haben alle Programme die selben Parameter oder unterschiedliche?

    MfG, James C.

    EDIT #1:
    Damit sollte es auch mit Parametern funktionieren.

    EDIT #2:

    In meinem jetzigen Fall ist es so das die Parameter gleich sind, was ist wenn die Parameter aber bei 1 oder 2 Progs anders sind.

    Ahja und wenn ich gerne pro Prog ein logfile haben könnte das es erfolgreich installiert worden ist. Kann man das auch noch irgendwie einpflegen?


    Damit sollte es funktionieren (siehe Script oben).

  • Hallo.

    Ja die haben alle die selben Parameter.
    dadurch vereinfacht sich die Sache denke ich mal ein wenig.

    Ich werde es mal ausprobieren.

    Danke ich glaube damit komme ich deutlich weiter.

  • Alternativ zu filefindfirstfile / nextfile...

    [autoit]


    #include <file.au3>
    #include <array.au3>

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

    $files = _filelisttoarray($folder,"*.exe",1)
    if $files <> 0 then
    _arraydisplay($files)
    for $i=1 to $files[0]
    runwait('"' & $folder & "\" & $files[$i] & '" /parameter') ; runwait damit alle schön nacheinander ausgeführt werden, run würde alle "zeitgleich" starten...
    next
    else
    msgbox(0,"Fehler","Keine Dateien gefunden... Errorcode: " & @error)
    endif

    [/autoit]
  • Ich hab jetzt das erste script oben benutzt. Es läuft prima hätte aber noch eine frage.

    In meinem jetzigen Fall ist es so das die Parameter gleich sind, was ist wenn die Parameter aber bei 1 oder 2 Progs anders sind.

    Ahja und wenn ich gerne pro Prog ein logfile haben könnte das es erfolgreich installiert worden ist. Kann man das auch noch irgendwie einpflegen?

    Einmal editiert, zuletzt von c.s.pieker (31. August 2011 um 15:39)

  • Ich hab jetzt das erste script oben benutzt. Es läuft prima hätte aber noch eine frage.

    In meinem jetzigen Fall ist es so das die Parameter gleich sind, was ist wenn die Parameter aber bei 1 oder 2 Progs anders sind.

    Ahja und wenn ich gerne pro Prog ein logfile haben könnte das es erfolgreich installiert worden ist. Kann man das auch noch irgendwie einpflegen?


    Danke, siehe Beitrag #1.

  • Super vielen dank!!

    Hab jetzt alles angepasst und es funktioniert super. Dadurch spare ich viel Zeit.

  • Tag zusammen,

    ich wieder :D

    habe nun das Problem, dass ich gemerkt habe das die Files in einer unsortierten Reihenfolge installiert wurden. Das gibt hier und da Probleme. Wie kann ich dem Script mitteilen das er anhand vom FileNamen Sortiert installieren soll?

    Ahso die Dateien sind Durchnummeriert angefangen mit
    0001_* zurzeit bis 0169_*

    Einmal editiert, zuletzt von c.s.pieker (10. Januar 2012 um 11:42)

  • verwende statt FileFindFirst ... FileFindNext

    [autoit]

    _FileListToArray

    [/autoit]

    dieses Array kannst du ja mit

    [autoit]

    _ArraySort

    [/autoit]

    sortieren lassen, dabei daran ddenken dass $aResult[0] die ANzahl der Funde enthält => also als Starindex 1 angeben. Danach kannst du in einer Schleife von 1 bis $aResult[0] alle EXEn starten.

    mfg autoBert

  • Vielen Dank autoBert!!!!

    Hab es nun mit Arrays gemacht und es funktioniert, nun wird sich zeigen ob es an der Installationsreihenfolge lag oder nicht.

    Danke für diesen Hinweis