Dateien löschen oder bewegen per script

  • Ich spiele gerne online und filme mit fraps gelegentlich sequenzen, aus den ich dann kurze filmchen erstelle.
    Bei meiner Maus habe ich einen button belegt, so das beim anklicken fraps startet bzw. beendet (während des Spiels). Die aufgezeichneten dateien werden in meinem fraps-ordner gespeichert. Nun hätte ich gerne eine Funktion an meinem zweiten Mausbutton, die es mir ermöglicht die zuletzt aufgenommene datei sofort wieder zu löschen (während des Spiels),wenn ich eh weiss das die sequenz die ich aufgenommen habe uninteressant ist. kann man soetwas per makro oder script o.ä. bewerkstelligen und kann mir jemand diese zeilen schreiben? Programmieren ist für mich chinesisch....

    Einmal editiert, zuletzt von bernd670 (5. Dezember 2008 um 21:29)

  • Hi, und willkommen im Forum :)

    Also als erstes muss ich sagen, dass die Jobbörse für Leute gedacht ist, die Geld ausgeben wollen für ihr Programm, ich denke mal das hast du nicht vor.

    Nun hätte ich gerne eine Funktion an meinem zweiten Mausbutton,

    Maustaste?
    Welche Maus, welche Maustaste?

    kann man soetwas per makro oder script o.ä. bewerkstelligen

    Kommt auf die Maustaste an, und wie gut man sie abfangen kann. Grundsätzlich kann man aber alles Programmieren.

    und kann mir jemand diese zeilen schreiben?

    Mmh, en bisschen eigene Arbeit könnte doch auch dahinter stecken. Die Befehle de man dafür braucht sind wirklich nicht schwer, und AutoIt ist sehr schnell zu erlernen.

    Programmieren ist für mich chinesisch....

    Das kann sich ändern ;).

  • hey da antwortet sogar jemand!!Cool!
    also Kohle is knapp, aber der wille es zu verstehen und zu lernen und der Wunsch selbständig ein paar zeilen zu tippen sind da... Nun zu meiner Maus: Microsoft Sidewinder, sie unterstütz makros und hat zwei daumentasten, die erste habe ich mit f9 belegt um fraps zu starten, die zweite soll eben die beschriebene löschfunktion bekomen. Wie sage ich bloß dem computer das er die letzte aufgenommene datei löschen soll?

  • Hi,
    also ich habe nicht rausgefunden, wie man die Daumentasten abfragt.
    Ich denke aber du kannst eine Datei auf die Taste legen? Oder vielleicht noch besser, leg eine Taste (Bsp. F5) auf die Daumentaste und mach dann einen Hotkey in dein Script, der die Aktion immer ausführt, wenn F5 gedrückt wird.

    So, die Videos werden denke ich auch immer wieder am selben Ort gespeichert. Diese Videos kannst du mit _Filelisttoarray einlesen. Vielleicht reicht ein einfaches _ArraySort schon aus, um den neusten Eintrag zu finden.

    Poste mal ein Paar Dateinamen und den Speicherort.
    Ich denke nicht, dass das allzu schwer ist ;).

  • Ja genau, das mit der Belegung der Tasten habe ich mir auch so vorgestellt, aber der rest mit den Befehlen sagt mir nix...ich bin ein absoluter noob, sogar wenn ich befehle kopiere und in das autoit script einfüge passiert nix: error.bla...
    Speicherort: J:\2.VISUALS\fraps\fraps-ingame\1

    die namen werden von fraps vergeben, ich habe mal was von einer wildcard gehört, *.avi, läßt sich damit was machen?? ich muss während des spiels löschen, ohne die datei vorher umzubennenen oder auf den desktop zu wechseln

  • Ja, is mir klar, dass die von fraps vergeben werden, aber ich brauch ein paar beispiel namen, ich denke, dass die nummeriert werden. Am besten auch 2 stellige Nummerierungen.

    Zitat

    sogar wenn ich befehle kopiere und in das autoit script einfüge passiert nix: error.bla...

    So leicht gehts auch wieder nicht :D

  • namen sehen ungefähr so aus:
    BF2 2008-11-07 22-15-37-96.avi
    BF2 2008-11-07 22-20-55-32.avi
    BF2 2008-12-02 22-51-01-03.avi
    BF2 2008-12-02 22-51-10-89.avi

    hilft das was, ich glaube die sind nach datum uhrzeit, und sonstwas aufgebaut...

  • [autoit]

    #include <File.au3>

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

    $array = _FileListToArray("J:\2.VISUALS\fraps\fraps-ingame\1", "*.avi", 1)
    if IsArray($array) Then
    $lastfile = $array[UBound($array)-1]
    MsgBox(0,"",$lastfile)
    Else
    MsgBox(0,"","Error, keine Daten!")
    EndIf

    [/autoit]

    Gugg ma, ob der Text in der MsgBox die zuletzt aufgenommene Datei is.

  • tatsächlich!! die zuletzt aufgenommene datei, ich bin beeindruckt, und könntest du es so programmieren das er die msgbox nicht anzeigt sondern diese datei gnadenlos löscht!?

  • Spoiler anzeigen
    [autoit]

    #include <File.au3>

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

    ; grüne Schrift = Kommentar = wird "überlesen"

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

    HotKeySet("{F2}", "_start") ; Hotkeyset = lege Hotkey fest ; der Hotkey ruft beim drücken der taste die Funktion _start() auf s.u.

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

    While 1 ;while-Schleife heißt, wiederhole etwas, solange, bis die Anweisung (das was hinter dem While steht (in dem Fall1))
    ;True ist. 1 ist immer True also ist das ne Endlosschleife d.h. er wiederholt immer weider das was unter dem While steht
    Sleep(100) ; das wird immer weider wiederholt. sleep = schlafen = nix machen in der Zeit ; sleep(100) = 100 msec nix machen
    WEnd ; damit macht man die While Schleife ienfach nochmal zu

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

    Func _start() ; Funktion, die von dem Hotkey aufgerufen wird, dazu wird die While Schleife kurzzeitig vom Hotkey-Befehl "übersprungen"
    $array = _FileListToArray("J:\2.VISUALS\fraps\fraps-ingame\1", "*.avi", 1) ; liest die *.avi Dateien ein, die im angegebenen Verzeichnis liegen ; sie sind zum Glück dann schon ichtig sortiert ;)
    If IsArray($array) Then ; wenn die Variable $array ein Array ist, dann wird der Code unten drunter ausgeführt.
    ; also wenn praktisch beim uaflisten der Dateien kein Error ist, dann werden die Befehle unter der If-Then Abfrage ausgeführt
    $lastfile = $array[UBound($array) - 1] ; der Variablen $lastfile wird der letzte Eintrag im Array $array zugeordnet = letzte Datei
    FileDelete("J:\2.VISUALS\fraps\fraps-ingame\1\" & $lastfile) ; löscht diese Datei
    EndIf ; schliesst die If-Then Abfrage
    EndFunc ;==>_start

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

    ; ich hoffe ich hab keinen Error reingebaut, ich habs nicht getestet.

    [/autoit]

    Einmal editiert, zuletzt von anno2008 (3. Dezember 2008 um 00:20)

  • eine kleinigkeit habe ich vergessen es ist mir gerade beim test aufgefallen, wenn das spiel läuft füllt es den kompletten bildschirm aus, dann ist die f2 funktion "im hintergrund" und reagiert nicht. wenn ich das spiel minimiere funktionirt es prima, gibt es eine möglichkeit das das script "im vordergrund" läuft (wie fraps) so das es reagiert?
    GUISetState (@SW_SHOW,$gui_handle)
    braucht man ddazu diesen befehl und wo muss der hin?

  • Den kansnt du entweder in einen

    [autoit]

    HotKeySet

    [/autoit]

    packen oder du erstellt dir eine GUI mit Koda und erstellt auf dieser Gui (

    [autoit]

    GuiCreate()

    [/autoit]

    ) einen Button (

    [autoit]

    GuiCtrlCreateButton()

    [/autoit]

    ) und legst die Funktion auf den Button.

  • mmmh das habe ich nicht gemeint, trotzdem danke für den tipp...oder nicht verstanden..sry

    Einmal editiert, zuletzt von rayman (3. Dezember 2008 um 20:29)

  • @r1fLeX, wie du vielleicht siehst wird überhaupt keine GUI benutzt.

    Mit im "Vordergrund" meint er, dass das Programm im Spiel keine Auswirkungen hat. Das kann entweder daran liegen, dass der AntiCheat-Schutz AutoIt blockt, oder dass die Taste für ne andere Funktion schon belegt ist...

    Kommt halt drauf an um welches Spiel es sich handelt, das kann man so nicht viel sagen, aber das hab ich eigentlich alles über ICQ schon geschrieben :)

  • Also ich denke, nach den Videos zu urteilen, handelt es sich um das Spiel "Battlefield 2". Dieses Spiel blockt AutoIt. -> Script geht nicht.

  • Komisch bei mir funktioniert BF2 und Autoit parallel. Mein Bot für BF2 *hust* funktioniert nämlich ganz normal. :whistling:

  • Dann handelt es sich um einen @error des Scripters. Vielleicht solltest du mal den @error code posten? :)

    Edit: Sorry, habe etwas überlesen. Es gibt ja gar keinen @error :P Ich meinte: Vielleicht solltest du mal den Code posten? :D

  • Der Code is von mir, ein paar Posts oben drüber. Also da is aber so wie ich das sehe kein Fehler drin ...

    Ohne Spiel geht es ja, vielleicht wird die F2 Taste ja einfach schon benutzt, wartet doch einfach bis morgen, dann wissen wir es, wenn sich rayman wieder meldet ;).