[Frage]

  • Hi Hi
    das ist mein erster Post ich arbeite noch nicht so lange mit.. AutoIT
    ich hab mir schon die Hilfdatei lange angeguckt.. doch irgentwie nicht ohne fehler weiter gekommen
    also ich brauch ein programm welches wartet bis ein process ezistiert das waere dann winwait aber ich weiss nicht was ich da eingeben muss die hilfsdatei hat mir auch nicht viel gebracht und wenn der process dann existiert soll er eine Datei ausschneiden und auf dem desktop wieder einfuegen und wenn der process nicht mehr existiert soll er die datei wieder zurueck tun...
    ein ansatz waere echt super..

  • am einfachen ist es, den fensternamen von dem kopierfenster zu kennen, damit kann man viel anfangen, ansonsten gib doch mal im internet "autoit WinWait" ein, oder geh hier hin: http://translation.autoit.de/onlinehilfe/fu…nktionsmane.htm
    bei hierderfunktionsname gibst du z.b. "WinWaitActive" ein

    Übersicht AutoIt Befehle
  • das mit win wait weiss ich schon aber wie sag e ich ihm genau welchen prozess er unteruchen soll?

  • Hier erstmal die Funktionen die du brauchst:

    [autoit]

    Winwait();Warten bis das Fenster existiert
    ;Alternativ -falls du wirklich den Prozess meinst: ProcessExists()
    Filemove();Datei von Source nach Desktop verschieben
    While ;Schleifenstart + Bedingung damit die schleife ausgeführt wird
    ProcessExists(); Prüft ob der Prozess existiert
    ;Falls du mit Fenstern arbeitest nimm WinExists()
    sleep(10); Eine Pause
    Wend; Bildet eine Schleife in der man eine Operation bis zu einem bestimmten Event ausführen lassen kann

    [/autoit]

    Lösung:
    (falls du eien Lerneffekt haben willst, dann guck hier erst rein wenn du es wenigstens probiert hast)

    Spoiler anzeigen
    [autoit]

    $Prozessname = "";Hier den Prozessnamen eingeben
    $Dateiname = ""; ...(ergibt sich oder?^^)
    $Quellpfad = ""; Bsp: "C:\MeinOrdner\"
    $Zielpfad = ""; Gleiches Schema wie bei $Quellpfad

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

    ProcessWait($Prozessname);Wartet auf Prozess
    FileMove($Quellpfad&$Dateiname,$Zielpfad&$Dateiname);Bringt die datei "in sicherheit"
    While ProcessExists($Prozessname);Prüft den Prozess
    Sleep(10)
    WEnd;Falls Prozess NICHT existiert wird die Schleife verlassen
    FileMove($Zielpfad&$Dateiname,$Quellpfad&$Dateiname);Datei wird zurückgespielt

    [/autoit]

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!

  • ProcessWait($crossfire.exe);Wartet auf Prozess
    FileMove($F:\Programme\Z8Games\CrossFire\rez&$RF017.REZ,$C:\Dokumente und Einstellungen\Besitzer\Desktop&$Rez);Bringt die datei "in sicherheit"
    While ProcessExists($crossfire.exe);Prüft den Prozess

    WEnd;Falls Prozess NICHT existiert wird die Schleife verlassen
    FileMove($F:\Programme\Z8Games\CrossFire\rez&$RF017.REZ,$C:\Dokumente und Einstellungen\Besitzer\Desktop&$Rez);Datei wird zurückgespielt


    jetzt verstehe ich den fehler nicht....

  • Du kannst das Lösungsscript eigentlich so wie es ist übernehmen.
    Beispiel (musst die Pfade / Prozessnamen anpassen):

    [autoit]

    $Prozessname = "Firefox.exe";Hier den Prozessnamen eingeben
    $Dateiname = "Textdatei.txt"; ...(ergibt sich oder?^^)
    $Quellpfad = "C:\Mein Ordner\Quelle\"; Bsp: "C:\MeinOrdner\"
    $Zielpfad = "C:\Mein Ordner\Ziel\"; Gleiches Schema wie bei $Quellpfad

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

    ProcessWait($Prozessname);Wartet auf Prozess
    FileMove($Quellpfad&$Dateiname,$Zielpfad&$Dateiname);Bringt die datei "in sicherheit"
    While ProcessExists($Prozessname);Prüft den Prozess
    Sleep(10)
    WEnd;Falls Prozess NICHT existiert wird die Schleife verlassen
    FileMove($Zielpfad&$Dateiname,$Quellpfad&$Dateiname);Datei wird zurückgespielt

    [/autoit]

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!

  • ich habe es genau so uebernommen bekomme immernoch nen error wieso ?
    natuerlich habe ich die pfade angepasst

  • Welchen Wert hat den der Error? Poste mal dein Script, vielleicht haste was falsch kopiert.

  • ok fehler is behoben nur is die datei beim oeffnen des programmes immernoch da ... wieso ?

  • ($F:\Programme\Z8Games\CrossFire\rez&$RF017.REZ,$C:\Dokumente und Einstellungen\Besitzer\Desktop&$Rez)


    Ist syntaktisch falsch.. es müsste richtig:

    [autoit]

    FileMove("F:\Programme\Z8Games\CrossFire\rez\"&"RF017.REZ","C:\Dokumente und Einstellungen\Besitzer\Desktop\"&"RF017.Rez")

    [/autoit]


    heißen.
    Sollte es immernoch nicht klappen, dann sende bitte den Quellpfad, den Zielpfad und den Prozessnamen.
    Anschließend würde ich etwas basteln können, damit wir dem Fehler auf die schliche kommen.
    Ist der Prozess denn wirklich beendet? (Vielleicht benötigst du Adminrechte:

    [autoit]

    #RequireAdmin

    [/autoit]

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!

  • Spoiler anzeigen

    $Prozessname = "crossfire.exe"
    $Dateiname = "RF017.REZ"
    $Quellpfad = "F:\Programme\Z8Games\CrossFire\rez"
    $Zielpfad = "C:C:\Dokumente und Einstellungen\Besitzer\Desktop";

    ProcessWait($Prozessname)
    FileMove($Quellpfad&$Dateiname,$Zielpfad&$Dateiname)
    While ProcessExists($Prozessname)
    Sleep (10)
    WEnd
    FileMove($Zielpfad&$Dateiname,$Quellpfad&$Dateiname)

    so habe ich es jetzt uebernommen doch wieso wird die datei nicht verschoben ?

  • was soll denn das
    $Zielpfad = "C:C:\Dokumente und Einstellungen\Besitzer\Desktop";
    ???????

    das doppelte C? Vorsicht mit Copy & Paste.

  • Nun hast du noch 2 Fehler drin:
    1. Nach dem Quell UND Zielpfad muss ein \ stehen..
    2. Der Pfad C:C: existiert bestimmt nicht (wäre mir neu)
    Das folgende sollte funktionieren:

    [autoit]

    $Prozessname = "crossfire.exe"
    $Dateiname = "RF017.REZ"
    $Quellpfad = "F:\Programme\Z8Games\CrossFire\rez\"
    $Zielpfad = "C:\Dokumente und Einstellungen\Besitzer\Desktop\";

    ProcessWait($Prozessname)
    FileMove($Quellpfad&$Dateiname,$Zielpfad&$Dateiname)
    While ProcessExists($Prozessname)
    Sleep (10)
    WEnd
    FileMove($Zielpfad&$Dateiname,$Quellpfad&$Dateiname)

    [/autoit]

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!

  • oh danke das du mich auf den fehler hinweist waere mir sonst net aufgefallen 1000 dank
    mal gucken ob er geht :D

  • soo jetzt gibt es noch ein problem ..
    der script soll 2 sekunden nachdem der prozess existiert erst die datei verschieben dazu muesste ich doch einfach nur speep 2000 einfuegen oder ?

    Spoiler anzeigen

    ProcessWait($Prozessname)
    Speep (2000)
    FileMove($Quellpfad&$Dateiname,$Zielpfad&$Dateiname)

  • Mit MsgBox und ConsoleWrite kannst du Fehler schnell finden, indem du den Wert von Variablen überprüfst. Damit wär es wahrscheinlich dir auch aufgefallen was $Zielpfad&$Dateiname ergeben.

    Edit: Probiers doch einfach;-)

  • Im Prinzip ein richtiger Ansatz.. jedoch solltest du statt "speep(2000)" doch besser "Sleep(2000)" benutzen :P

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!

  • ich verstehe jetzt nicht was du willst
    also der script sieht im moment so aus

    Spoiler anzeigen

    $Prozessname = "crossfire.exe"
    $Dateiname = "RF017.REZ"
    $Quellpfad = "F:\Programme\Z8Games\CrossFire\rez\"
    $Zielpfad = "C:\Dokumente und Einstellungen\Besitzer\Desktop\";

    ProcessWait($Prozessname)
    Sleep (2000)
    FileMove($Quellpfad&$Dateiname,$Zielpfad&$Dateiname)
    While ProcessExists($Prozessname)
    Sleep (2000)
    WEnd
    FileMove($Zielpfad&$Dateiname,$Quellpfad&$Dateiname)