Netzwerk Script

  • Hallo ihr!

    Ich arbeite grade an einem script, der erkennt wenn jemand über das Netzwerk ein Datei aufmeinen pc gelegt hat!

    Allerdings habe ich ein paar probleme! Soweit bin ich schon gekommen:

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

    While 1

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

    $search = FileFindFirstFile("\\Lennart\SharedDocs\Network\*.*")
    If @error Then Sleep(1000)
    If $search = 1 Then
    $file = FileFindNextFile($search)
    If @error Then Sleep(1000)

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

    If Not IsDeclared("iMsgBoxAnswer") Then Local $iMsgBoxAnswer
    $iMsgBoxAnswer = MsgBox(36, "Neue Datei gefunden!", "Es wurde eine neue Datei mit dem Namen " & $file & " gefunden!" & @CRLF & "Jetzt Ausführen ?")
    Select
    Case $iMsgBoxAnswer = 6
    Sleep(1000)
    ShellExecute($file)

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

    Case $iMsgBoxAnswer = 7

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

    EndSelect

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

    EndIf

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

    WEnd

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


    So .... Ich denke das mit den @Error ist sinnlos, weiß es aber nicht genau!

    Außerdem erkennt er immer die datei, führt sie aber, wenn ich auf "Ja" klicke nicht immer aus (1/15mal) =D D.h ich hatte jetzt schon lange keien erfolg mehr! Vorher hats aber genau so geklappt! Jetzt komm immer die Meldung "Die Datei xyz.jpg" konnte nicht gefunden werden usw ...


    Könntet ihr mir dabei helfen? Vielen Dank im Vorraus =D

    Lenny

    Jaja, Moo does the Cow!

  • FileFindNextFile übergibt nur den Dateinamen und keinen Pfad dorthin !


    Also sollte Zeile 15 besser so aussehen:

    ShellExecute (StringLeft($search,StringInStr($search,"\",0,-1)) & $file)

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Also Vielen Dank für die Antowort !

    Allerdings besteht das problem das er die datei nicht findet immernoch!

    Hmm ....

    Aber wenn filefind nur den dateinamen übergibt ... warum konnt ich die gefundene datei einpaar mal ausführen =?

    vielen Dank im Vorraus

    Lenny :thumbup:

    Edit: Okay jetzt geht es Komischerweise! Aber geht das nicht noch einfacher ?
    Und: Also wenn ich jetzt eine Datei in den Ordnerpacke kommt diese msgbox ^^ aber wenn ich dann nohc eine datei reinpacke kommt es nicht mehr .... wie bekomm ich das hin ?

    Vielen dank im Vorraus

    Jaja, Moo does the Cow!

    Einmal editiert, zuletzt von Lenny (19. Januar 2008 um 11:57)

  • War zum Teil mein Fehler, mit '$search' geht das natürlich nicht mehr, weil es der Rückgabewert der 'FileFindFirstFile'-Funktion ist. Ansonsten hättest Du dich nur an die AutoIt-Hilfe zu 'FileFindNextFile'-Funktion halten müssen.

    So korrigiert könnte es klappen:

    [autoit]

    $path = "\\Lennart\SharedDocs\Network\"

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

    If StringRight($path,1) <> "\" then $path &= "\"
    $search = FileFindFirstFile($path & "*.*")
    If $search = -1 Then Exit ; keine Datei gefunden
    While 1
    $file = FileFindNextFile($search)
    If @error Then Exitloop ; keine weitere Datei
    If Not IsDeclared("iMsgBoxAnswer") Then Local $iMsgBoxAnswer
    $iMsgBoxAnswer = MsgBox(36, "Neue Datei gefunden!", "Es wurde eine neue Datei mit dem Namen " & $file & " gefunden!" & @CRLF & "Jetzt Ausführen ?")
    Select
    Case $iMsgBoxAnswer = 6
    Sleep(1000)
    ShellExecute($path & $file)

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

    Case $iMsgBoxAnswer = 7
    ; nix tun

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

    EndSelect
    WEnd

    [/autoit]

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Vielen dank!


    Aber:

    [autoit]


    $path = "\\Lennart\SharedDocs\Network\"
    If StringRight($path, 1) <> "\" Then $path &= "\"
    $search = FileFindFirstFile($path & "*.*")
    If $search = -1 Then Exit ; Wenn keine Datei gefunden soll er solange suchen bis er eine findet.
    While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop ;Wenn er die erste datei gefunden hat und ich sie mit filemove aus dem verzeichnis nehme, soll er weitersuchen und wieder sagen wenn die nächste da ist! =)
    If Not IsDeclared("iMsgBoxAnswer") Then Local $iMsgBoxAnswer
    $iMsgBoxAnswer = MsgBox(36, "Neue Datei gefunden!", "Es wurde eine neue Datei mit dem Namen " & $file & " gefunden!" & @CRLF & "Jetzt Ausführen ?")
    Select
    Case $iMsgBoxAnswer = 6
    Sleep(1000)
    ShellExecute($path & $file)
    Case $iMsgBoxAnswer = 7
    ; nix tun
    EndSelect
    WEnd

    [/autoit]


    Hab ich nicht hinbekommen! Vielen Dank im Vorraus!

    Jaja, Moo does the Cow!

  • Habe ich das jetzt richtig verstanden:

    - er wartet auf eine Datei (endlos)
    - wenn Datei da dann ausführen
    - wenn alle ausgeführt warten bis neue kommt

    Dann müsste das Script sich ja merken welche schon ausgeführt wurde !

    oder Möglichkeit 2:

    - er wartet auf eine Dateien (endlos)
    - wenn Datei da dann ausführen
    - wenn ausgeführt dann löschen / verschieben
    - wenn alle ausgeführt von vorne Anfangen

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Hmm =P

    Also ich habe mir das so gedacht:

    - er wartet auf eine Dateien (endlos)
    - wenn Datei da, dann msgbox(Möchten sie die datei nun ausführen?)
    - wenn ja, Ausführen, sleep(500), Verschieben, warten bis neue datei kommt und wieder fragen
    - wenn nein, verschieben, warten bis neue datei kommt und wieder fragen
    - wenn alle abgefragt weiter suchen


    Ich weiß nicht ob das zu kompliziert ist!

    Aber Vielen, Vielen Dank für deine bzw. Eure Hilfe!

    Lenny

    Jaja, Moo does the Cow!

  • na dann so...

    [autoit]

    $path = "\\Lennart\SharedDocs\Network\"
    $backup = @tempdir
    If StringRight($path,1) <> "\" then $path &= "\"
    While 1
    $search = FileFindFirstFile($path & "*.*")
    If $search = -1 Then
    ; keine Dateien gefunden
    FileClose($search)
    Sleep (1000)
    Else
    ; wenn Dateien vorhanden, dann abarbeiten
    While 1
    $file = FileFindNextFile($search)
    If @error Then Exitloop ; keine weitere Datei gefunden, innere Schleife verlassen
    If Not IsDeclared("iMsgBoxAnswer") Then Local $iMsgBoxAnswer
    $iMsgBoxAnswer = MsgBox(36, "Neue Datei gefunden!", "Es wurde eine neue Datei mit dem Namen " & $file & " gefunden!" & @CRLF & "Jetzt Ausführen ?")
    Select
    Case $iMsgBoxAnswer = 6
    Sleep(1000)
    ShellExecute($path & $file)
    FileMove($path & $file, $backup, 9) ; Ordner wird ggf. erzeugt, alte Dateien überschrieben

    Case $iMsgBoxAnswer = 7
    FileMove($path & $file, $backup, 9) ; Ordner wird ggf. erzeugt, alte Dateien überschrieben

    EndSelect
    Wend
    FileClose($search)
    EndIf
    Wend

    [/autoit]

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Okay Super!

    Vielen Dank für deine Hilfe!

    Doch nur noch ein kleines entgültiges Problem hab ich...
    Sobald ich auf "Ja" klicke führt er die Datei zwar aus,

    verschiebt sie aber nicht .... d.h. solangen man sich das lied anhört bzw die word datei geöffnet hat komm ja immer diese msgbox ... :/

    Aber ich werde versuchen dieses problem selber zu lösen =)

    Vielen Dank Micha_he!

    Lenny :thumbup: ^^ :thumbup:

    Edit1:
    Problem gelöst und folgendes endergebnis:

    Spoiler anzeigen
    [autoit]


    $path = "\\Lennart\SharedDocs\Network\"
    $backup = @DesktopCommonDir & "\FromNetwork\"
    If StringRight($path, 1) <> "\" Then $path &= "\"
    While 1
    $search = FileFindFirstFile($path & "*.*")
    If $search = -1 Then
    ; keine Dateien gefunden
    FileClose($search)
    Sleep(1000)
    Else
    ; wenn Dateien vorhanden, dann abarbeiten
    While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop ; keine weitere Datei gefunden, innere Schleife verlassen
    If Not IsDeclared("iMsgBoxAnswer") Then Local $iMsgBoxAnswer
    $iMsgBoxAnswer = MsgBox(36, "Neue Datei gefunden!", "Es wurde eine neue Datei mit dem Namen " & $file & " gefunden!" & @CRLF & "Jetzt Ausführen ?")
    Select
    Case $iMsgBoxAnswer = 6
    FileMove($path & $file, $backup, 9)
    Sleep(2500)
    ShellExecute($backup & $file)

    Case $iMsgBoxAnswer = 7
    FileMove($path & $file, $backup, 9) ; Ordner wird ggf. erzeugt, alte Dateien überschrieben
    EndSelect
    WEnd
    FileClose($search)
    EndIf
    WEnd

    [/autoit]

    Jaja, Moo does the Cow!

  • Es geht einfacher:

    Zeile 20 muss so lauten: ShellExecuteWait($path & $file)

    Hatte ich auch schon geschrieben, bevor mein Editor die Grätsche gemacht hat. Und in der Version die ich anschließend neu schrieb, hab ich es vergessen :(

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"