Fileopen Fileread FileXists Problem

  • Mit Fileopen und Fileread kann ich den Inhalt meiner Installort.txt
    super auslesen, das Ausgelesende wird dann in der Variable
    $line gespeichert.

    Mit Run($line) start dann auch das Programm was ich in der Installort.txt
    Datei beschrieben habe.(Text in der Installort: "C:\Programme\Programm.exe" )

    Nur wenn ich abfrage ob die Datei vorhanden ist mit:
    If NOT FileExists ($line) findet er die Datei nicht und gibt
    die Msgbox mit der Medlung raus.

    Jemand einen Plan was ich falsch mache :(

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

    $file = FileOpen("Installort.txt", 0)

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

    If $file = -1 Then ; Check ob Installort.txt vorhanden ist
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    EndIf

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

    $line = FileReadLine($file) ; Auslesen des Inhalts der Installort.txt
    If @error = -1 Then ExitLoop

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

    If NOT FileExists($line) Then ;Abfrage ob das Programm installiert ist <--- Der Befehlt funktioniert nicht :(
    MsgBox(0, "Fehler", "Programm ist nicht installiert")
    Exitloop
    Endif

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



    BlockInput (1)

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

    Run($line) ;Der Befehl funktioniert

    [/autoit][autoit][/autoit][autoit][/autoit]
  • Hi,

    daran liegts nicht, da Not das Gleiche bewirkt.
    Bei mir funktioniert folgender Code:

    Spoiler anzeigen
    [autoit]

    Local Const $S_FILE = @ScriptDir & "\Installort.txt"
    Local $h_file = -1
    Local $s_line = ""

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

    $h_file = FileOpen($S_FILE, 0)
    If $h_file = -1 Then
    MsgBox(16, "ERROR", "Unable to open file", 5)
    Exit
    EndIf

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

    While 1
    $s_line = FileReadLine($h_file)
    If @error Then ExitLoop
    If Not FileExists($s_line) Then
    MsgBox(16, "ERROR", $s_line & " ist nicht installiert!")
    Else
    Run($s_line)
    EndIf
    WEnd
    FileClose($h_file)

    [/autoit]


    Vorraussetzung ist natürlich, dass in der TXT-Datei der vollständige Pfad zu den Programmen steht!

  • In meiner Installort.txt steht der Pfad :(
    Wenn ich nur den Run-Befehl nehme funktioniert es,
    auch mit dem Skript bekomme ich wieder die Rückmeldung:

    Error
    "C:\Programm\Programm.exe" ist nicht installiert!

    -.-
    Also im Klartext, wenn ich folgende Zeile rausnehme vor dem Run Befehl
    geht es:

    [autoit]

    If NOT FileExists($line) Then ;Abfrage ob Programm installiert ist
    MsgBox(0, "Fehler", "Programm ist nicht installiert")
    ContinueLoop
    Endif

    [/autoit]

    Warum......... Warum läuft es nur so:

    [autoit]

    $file = FileOpen("Installort.txt", 0)

    ; Check ob Installort.txt vorhanden ist
    If $file = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    EndIf

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

    $line = FileReadLine($file) ; Auslesen des Inhalts der Installort.txt
    If @error = -1 Then ExitLoop

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

    Run($line)

    [/autoit]

    Einmal editiert, zuletzt von Snatch (13. September 2007 um 10:34)

  • Mhh,

    Deinen Fehler kann ich mit meinem Skript hier nicht nachvollziehen!
    Versuch vielleicht mal

    [autoit]

    $s_line = FileReadLine($h_file)

    [/autoit]


    durch

    [autoit]

    $s_line = StringStripCR(FileReadLine($h_file))

    [/autoit]


    zu ersetzen, bzw. logge $s_line mal in eine Datei, ob da irgendwelche Sonderzeichen mit drin sind...

  • Ok habe den Fehler gefunden.
    Weil ich in der Installort.txt bereits Gänsefüschen hatte, kam dann
    der Fehler :(, also "C:\Programme\Programm.exe" ohne läuft es
    jetzt also: C:\Programme\Programm.exe

    War nur irritiert das der RUN Befehl mit der Information aus der
    Installort.txt problemlos lief aber der FileExists nicht

    Danke nochmal für eure Hilfe.

    Problem gelöst