Programm aus bestimmtem Ordner öffnen

  • Hallo AutoIt Community,
    leider muss ich erneut ein Thread aufmachen :thumbdown:
    Ich habe das Problem das ich mit den Makros nicht weiterkomme, da das auszuführende Programm in einem bestimmtem Ordner liegt.
    Hier mein Script:

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

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=c:\
    $asd = GUICreate("asd", 414, 154, 192, 124)
    $hFilepath = GUICtrlCreateInput("Fehlerhafte Datei auswählen", 24, 16, 265, 21)
    $hSearch = GUICtrlCreateButton("Durchsuchen", 304, 16, 75, 25)
    $Checkbox1 = GUICtrlCreateCheckbox("nfixup", 16, 72, 97, 17)

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

    $Button2 = GUICtrlCreateButton("Repair", 304, 48, 75, 25)While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hSearch
    $sFilepath = FileOpenDialog("Wählen Sie die Datei aus", @DesktopDir, "(*.nsf)")
    If Not @error Then GUICtrlSetData($hFilepath, $sFilepath)

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

    Case $Button2

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

    If GUICtrlRead($Checkbox1) = 1 Then

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

    $CMD = Run(@ComSpec& " /K " & ('nfixup.exe ') , @SystemDir, @SW_show)
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    Dieses "nfixup.exe" soll jetzt aber in einem ganz bestimmten Ordner ausgeführt werden.
    Gibt es eine Möglichkeit den genauen Dateipfad anzugeben, sodass nfixup.exe auch gefunden wird? :D

    MfG Sky

    Einmal editiert, zuletzt von skybor1994 (20. Dezember 2011 um 16:05)

  • das eine ist der Pfad zur Datei das andere das Arbeitsverzeichnis
    Was spricht dagegen den Pfad zur Exe absolut/relativ aber halt komplett anzugeben.


    & ('nfixup.exe ') <-- wozu sind denn die Klammern an der Stelle?

    & @systemdir & 'nfixup.exe '

    Und was ist das für ne Exe gehört die da wwirklich hin?

    [autoit]

    run

    [/autoit]

    klick mich wegen Hilfe

    Run ( "program" [, "workingdir" [, show_flag[, opt_flag ]]] )

    Parameter
    program Der komplette Pfad des Programms (.EXE, .BAT, .COM oder .PIF), die ausgeführt werden soll. (siehe Bemerkungen)
    workingdir [optional] Der Pfad, in dem das Programm ausgeführt werden soll (Arbeitsverzeichnis). Dies ist nicht der Pfad des Programms.

    Achtung Anfänger! :whistling:

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

  • So das Programm tatsächlich in System32 liegt, kannst du es auch einfach ohne Ordner und workingdir aufrufen.

    Bist du dir sicher, dass das Programm da ist? Klappt es, wenn du es manuell in die Shell eintippst?

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Genau das ist es doch, das Programm liegt nicht dort(btw. "nfixup.exe" ist von LotusNotes, deßhalb kennt ihr es wahrscheinlich nicht :D ), deßhalb suche ich doch einen Befehl, der das Programm dort sucht, wo es liegt zB: C:\LotusNotes\Data
    Was muss ich in mein Script schreiben, damit es das Programm dort findet und ausführt?

  • Regread und das Lotusverzeichnis aus der Registry auslesen
    und das dann in den RunBefehl einarbeiten :)

    [autoit]


    $path = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Lotus\Version", "ProgramFilesDir")
    If fileexists($path) then
    $path &= "\nfixup.exe"
    Run($path , "", @SW_show)
    else
    exit
    endif

    [/autoit]


    In der Registry musst Du selber suchen weiß zwar das es zu Lotus gehört aber kenne die Einträge / Pfade nicht.

    Gruß Dietmar

    Achtung Anfänger! :whistling:

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

    Einmal editiert, zuletzt von Dietmar (21. Dezember 2011 um 10:36)