Problem bei Pfadangaben

  • Hallo Leute,
    ich bins mal wieder :rock::rock:
    Ich bin inzwischen mit meinem Projekt fast fertig ^^ Jetzt mach ich gerade nur noch alle Pfadangaben dynamisch bzw. unabhängig von der Position des Scripts.

    Bei den @ComSpec-Funktionen kann ich C:\ Pfade nehmen... allerdings funktioniert das bei FileFindFirstFile nicht :(

    Wie gebe ich den Pfad eines Ordners an?

    Derzeit ist es so:

    [autoit]

    $search = FileFindFirstFile("./aktuellste AddIns/*.dll")

    [/autoit]

    Einmal editiert, zuletzt von DJScorpion (15. September 2008 um 16:16)

  • Nein.
    ...ohne das zu testen kann ich dir sagen, dass ich incht den Ordner suche in dem das Script liegt.
    Sondern irgendeinen Ordner.

    Beispiel:

    [autoit]

    FileFindFirstFile("S:/Keks/Ordner2/bla/*.dll")

    [/autoit]

    Und das funktioniert nicht. :(

  • Nein.
    ...ohne das zu testen kann ich dir sagen, dass ich incht den Ordner suche in dem das Script liegt.
    Sondern irgendeinen Ordner.

    Beispiel:

    [autoit]

    FileFindFirstFile("S:/Keks/Ordner2/bla/*.dll")

    [/autoit]

    Und das funktioniert nicht. :(

    probiers doch ma mit: FileChangeDir ( "path" )
    und dann einfach noch FileFindFirstFile("*.dll")

  • Wollte nur sagen: Bei mir klappt's wunderbar!!

    [autoit]

    $files = FileFindFirstFile(@systemdir&"/*.dll")

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

    If $files = -1 Then
    MsgBox(0, "Error", "No files/directories matched the search pattern")
    Exit
    EndIf

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

    While 1
    $file = FileFindNextFile($files)
    If @error Then ExitLoop

    MsgBox(4096, "File:", $file)
    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit]
  • Dann wirds jetzt echt Kurios...
    (Guten Morgen Leute)

    Wenn ich @SystemDir ausgeben lasse wird mir C:\WINDOWS\system32 angezeigt.... soweit klar!
    So und du schreibst in deinem Beitrag @systemdir&"/*.dll"

    Darf ich das mal zusammenstellen:
    C:\WINDOWS\system32/*.dll

    Also wie muss ich das jetzt verstehen?
    Gehen wir davon aus, dass ich die DLLs aus dem Ordner "S:\Ordner\Sub-Ordner" haben möchte.
    Wie schreibe ich das dann? Erst den Pfad (so wie gerade genannt) in eine Variable und dann so: FFFF($Pfad&"/*.dll") ?

    Gruß Scorpion

    PS: Die / und \ Geschichte hier verwirrt mich entgültig.

  • Hab alles durchgetestet: Es funktioniert alles so wie es soll, egal ob Slash oder Backslash, diese können auch beliebig vertauscht werden.
    Der Pfad kann auch aus beliebig vielen Teilen zusammengestellt werden.


    [autoit]

    $drive = "C"
    $path = "windows/system32"
    $pattern = "*.dll"

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

    $files = FileFindFirstFile($drive & ":/" & $path & "\" & $pattern)

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

    If $files = -1 Then
    MsgBox(0, "Error", "No files/directories matched the search pattern")
    Exit
    EndIf

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

    While 1
    $file = FileFindNextFile($files)
    If @error Then ExitLoop

    MsgBox(4096, "File:", $file)
    WEnd

    [/autoit]
  • Gaaaanz ruhig. Was ist dein Problem?

    Funkey hat im Beitrag 6 geschrieben, dass $files = FileFindFirstFile(@systemdir&"/*.dll") ohne Probleme funktioniert.

    Und jetzt nochmal einzeln: @systemdir = C:\WINDOWS\system32
    Bei diesem Pfad werden als Trennzeichen Backslashs benutzt... soweit kein Thema... ist ja alles logisch.

    Jetzt der zweite Teil des FileFindFirstFile-Parameters: /*.dll

    So... und darf ich jetzt mal Parameterteil 1 und 2 zusammensetzen? ...also das was das & dazwischen ja macht?
    Dann kommt bei mir mit logischem Denken das raus:
    C:\WINDOWS\system32/*.dll

    Aber zur Erinnerung: funkey sagt dass es ohne Probleme funktioniert... Deshalb bitte ich um eine Erklärung, wie die Parameter zusammenwirken, sodass es funktioniert (trotz komplett wiedersprüchlichen Trennzeichen).

    PS: Wieso soll ich jetzt ein Array erstellen anstatt es in einer Schleife zu belassen?