Dateipfad aus *.exe auslesen

  • Hallo,
    ich hätte ein Problem. Bin leider ein Anfänger.

    Es geht darum, dass ich den Pfad einer Datei öffnen will. Es soll eine Art Anleitung werden, deshalb ist der Pfad nicht immer gleich.

    Also z.B.:

    bei User A ist der Pfad der Desktop Verknüpfung "C:\Programme\abc\abc.exe"
    bei User B ist der Pfad der Desktop Verknüfpung "D:\abc\abc.exe"

    Geht das, dass AutoIt den Pfad ausliest und diesen dann öffnet? (Nur den Ordner, nicht die Datei!)

    Vielen Dank im Voraus ;)

  • Wenn du nur wissen willst wie der korrekte Pfad zum Desktop oder anderen Systemverzeichnissen lautet benutz eines der Makros.
    Für den Desktop gibt es z.B. @DesktopDir weiter findest du in der Hilfe unter Makro Referenz.

    Ansonsten kann man ggf. den Pfad zu Programm X auch über die registry auslesen und sich daraus dann den Ordner ableiten.
    Aber wird wohl das beste sein wenn du nochmal genauer erläuterst was du im speziellen nun realisieren willst.

    EDIT: Wenn du den Pfad auf den eine Verknüpfung verweist auslesen willst kannst du auch FileGetShortcut verwenden.

  • Hallo Deep Vulcano,

    laut Überschrift würde ich sagen du suchst @ScriptFullPath. nach dem lesen des Themas komme ich allerdings zu dem Schluss dass du eine Rotine benötigst die deine Festplatte(n) durchsucht, z.b:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    $sFileToFind = "autoit3.chm" ;exakter Name mit Erweiterung WildCards werden nicht unterstützt
    Global $aResult[1]
    $aResult[0] = 0
    $sType = "Fixed" ;möglich sind "ALL", "CDROM", "REMOVABLE", "FIXED", "NETWORK", "RAMDISK" oder "UNKNOWN"
    _SearchForFile($sFileToFind,$sType,$aResult)
    _ArrayDisplay($aResult)

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

    Func _SearchForFile($sFileToFind,$sType,ByRef $aResult)
    $adrives = DriveGetDrive($sType)
    for $i = 1 to $adrives[0]
    $aSearch = _SearchInDrive($sFileToFind, $adrives[$i]& "\")
    for $j = 0 to UBound($aSearch) -1
    $aItem = StringSplit($aSearch[$j],"\")
    if $aItem[$aItem[0]] = $sFileToFind Then ;da auch LNK-Einträge in Recent-Files mit gefunden werden leider nötig
    _ArrayAdd($aResult,$aSearch[$j])
    $aResult[0] += 1
    EndIf
    Next
    Next
    EndFunc

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

    Func _SearchInDrive($sFile, $sDir = "\")
    Local $aReturn
    RunWait(@ComSpec & ' /C dir /S /B /A: H S R A ' & $sDir & ' | FIND /I "' & $sFile & '" > ' & @TempDir & '\TempSearch.TXT', "", @SW_HIDE)
    Return StringSplit(StringStripWS(FileRead(@TempDir & '\TempSearch.txt'), 3), @CRLF, 3)
    EndFunc

    [/autoit]

    das Ergebnis ist ein Array mit allen Vorkommen dieser Datei:

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
    mfg autoBert

  • Hey bin zwar neu hier :S und denke du hast dein Problem schon gelöst aber hier eine Lösung um Programme oder Ordner auf dem USB-Stick zu starten, da dieser ja immer den Laufwerksbuchstaben ändert..

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

    $name = '"Programme\FileZilla\FileZillaPortable.exe"'
    Run($name)
    #cs

    Oder einen bestimmten Ordner öffnen =>

    #ce

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

    Dim $scriptpath
    $scriptpath = @ScriptDir
    ShellExecute($scriptpath & '\Programme\AutoIT')

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

    mfg payno