Feststellen, ob bestimmte Dateien vorhanden sind

  • Wie kann ich feststellen, ob bestimmte Dateien in einem bestimmten Ordner vorhanden sind?

    Also: "Wenn die Dateien vorhanden sind, führe das Script weiter aus, ansonsten gib Fehlermeldung und halte Script an"

    Einmal editiert, zuletzt von Root (23. März 2009 um 18:41)

  • mit der taste END beendest du das scriptchen ^^

    Spoiler anzeigen
    [autoit]

    HotKeySet("{END}","_exit")

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

    While 1
    Sleep(100)
    $file = "test.au3" ; file angeben wo du überprüfen willst!
    If Not FileExists($file) Then
    MsgBox(16,"File Check","Die Datei wurde nicht gefunden!")
    Exit 1
    EndIf
    WEnd

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

    Func _exit()
    Exit 0
    EndFunc

    [/autoit]
  • Aus der HILFE, die sehr gut ist:

    Spoiler anzeigen
    [autoit]


    ; FileExists ( "path" )

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

    If FileExists("C:\autoexec.bat") Then
    MsgBox(4096, "Datei C:\autoexec.bat", "Existiert")
    Else
    MsgBox(4096,"Datei C:\autoexec.bat", "existiert NICHT")
    EndIf

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

    If FileExists("C:\") Then
    MsgBox(4096, "Verzeichnis C:\ ", "existiert")
    Else
    MsgBox(4096,"Verzeichnis C:\ " , "existiert NICHT")
    EndIf

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

    If FileExists("D:\") Then
    MsgBox(4096, "Laufwerk D: ", "existiert")
    Else
    MsgBox(4096,"Laufwerk D: " , "existiert NICHT")
    EndIf

    [/autoit]

    Das sollte Dir doch weiter helfen.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Danke, das funktioniert soweit.
    Ja, die Hilfe ist sehr gut. Wenn man die Funktion jedoch nicht kennt, wirds schwierig.

    Kann man an eine vorherige Stelle im Script zurück springen?

  • für was?

    was willst noch ^^ hab dir doch schon des zusammengebastelst was du wolltest *g*
    sollen es mehrere files sein oder wie?

  • Ich will nicht, dass das Programm geschlossen wird, wenn die Datei nicht vorhanden ist. Sondern die Möglichkeit zur Korrektur besteht.

    • Offizieller Beitrag

    Vielleicht meinst Du ja sowas:

    [autoit]


    Global $aFiles[3] = [@WindowsDir & '\explorer.exe', @WindowsDir & '\notepad.exe', @WindowsDir & '\regedit.exe']
    $bCheck = True
    For $i = 0 To UBound($aFiles) - 1
    If Not FileExists($aFiles[$i]) Then $bCheck = False
    Next
    If Not $bCheck Then
    MsgBox(0, 'Fehler', 'Die erforderlichen Dateien sind nicht vollständig vorhanden!')
    Else
    MsgBox(0, 'kein Fehler', 'Alle Dateien vorhanden!')
    EndIf

    [/autoit]
  • Ich glaub er meint das so:
    Wenn die Datei nicht gefunden wurde, soll autoit zu eine Func zurückkehren.

    Das liese sich so lösen:

    [autoit]

    Func _Ex ()
    ; Hier wird das script weiter ausgeführt, wenn die Datei nich vorhanden ist.
    EndFunc ;==> _Ex

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

    If FileExists ("C:\Test.txt") Then ; Testet, ob die Datei vorhandenist.
    MsgBox (64, "Datei gefunden", "Die Datei wurde gefunden!") ; Wenn sie vorhanden ist, wird diese MsgBox gezeigt.
    Else
    _Ex () ; Wenn sie nicht vorhanden ist, kehrt das programm zurück zu - Func _Ex ().
    EndIf

    [/autoit]

    Das Heist, du kannst i.wo z.B. _bla () setzen, dabei ist das () wichtig, das _ davor is net so wichtig.
    kommt dein script nin also zu diesem _bla (), springt es zu der Func, mit der bezeichnung _bla (), also zu Func _bla ().

    Das ist eigl. das gleiche wie z.B. der GoTo Befehl, den man glaub ich aus Batch oder alten AutoIT versionen kennt.

    2 Mal editiert, zuletzt von Commander21 (23. März 2009 um 16:44)

  • ICH glaube, er meint es so:
    (Teile von Oscar:))

    Spoiler anzeigen
    [autoit]


    Global $aFiles[3] = [@WindowsDir & '\explorer.exe', @WindowsDir & '\notepad.exe', @WindowsDir & '\regedit.exe']
    $bCheck = True
    For $i = 0 To UBound($aFiles) - 1
    Do
    sleep(1000)
    Until FileExists($aFiles[$i])
    Next

    [/autoit]


    :)
    Ich merke grade, wie sinnlos mein Skript ist... :huh:

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

  • Hi,
    hier wird dem Nutzer die fehlende Datei mit Speicherort benannt und Du kannst besseren Support liefern. ;)

    [autoit]


    Dim $aRes[5] = [@ScriptDir & "\SfBsys\W.ico", @ScriptDir & "\SfBsys\A.ico", _
    @ScriptDir & "\SfBsys\N.ico", @ScriptDir & "\SfBsys\S.ico", @ScriptDir & "\SfBsys\Blau4SfB.jpg"]
    For $z = 0 To 4 ;i statisch kein Ubound
    If Not FileExists($aRes[$z]) Then Exit _
    MsgBox(16, 'Error ' & $title, $aRes[$z] & @CRLF & @CRLF & "Datei nicht gefunden ! ")
    Next

    [/autoit]


    siehe auch dieses Beispiel:
    Shutdown for Benjamin - SfB

    Viel Erfolg ! :thumbup:

  • Oscar
    Bei deinem Vorschlag wird das Script weiter abgearbeitet, auch wenn nicht alle Dateien vorhanden sind, das soll nicht sein.

    @commander 21
    Genau so soll es sein, nur leider funktioniert es bei mir nicht. Das Script springt nicht an die Stelle Func _Ex () zurück.

    Einmal editiert, zuletzt von Root (23. März 2009 um 18:18)

  • Hi, so besser ?

    [autoit]


    If FileExists ("C:\Test.txt") Then ; Testet, ob die Datei vorhanden ist.
    MsgBox (64, "Datei gefunden", "Super, die Datei wurde gefunden!") ; Wenn vorhanden, dann diese MsgBox zeigen
    Else
    _Ex () ; Wenn sie nicht vorhanden ist, kehrt das programm zurück zu - Func _Ex ().
    EndIf

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

    Func _Ex ()
    MsgBox (64, "Datei nicht gefunden ! ", "Hier wird die Funktion _Ex ausgeführt ! ") ; Hier wird das script weiter ausgeführt, wenn die Datei nicht vorhanden ist.
    EndFunc ;==> _Ex

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

    ; Ende

    [/autoit]


    Bitte auch den Sinn hinterfragen, wenn Dateien fehlen ! Ich kenne nicht das Script !
    Viel Erfolg ! :)