Danke nochmal AspirinJunkie! So war ich erfolgreich
Da war ich leicht blind
Beiträge von autoiter
-
-
Äh ja, natürlich. Daran habe ich echt nicht gedacht
Echt blöd. Danke dir schon mal. Das spart mir den Unsinn, den ich mit der Variable nextshow2 mache. -
Hey Leute,
ich habe mal wieder ein Problem mit dem ich nicht alleine klar komme. Ich möchte bestimmte Daten aus einem Textfile holen, der etwa folgendermaßen ausschaut:309903954330074281 1401793200 1800
Titel
Info info
info...309903954330074282 1401795000 2700
Titel
Info info info...309903954330075105 1401797700 2700
Titel
Info
info
info...Es handelt sich hier um EPG Daten und ich möchte die Sendezeit der nachfolgenden Sendung ermitteln. Der erste Zahlenwert ist die ID der Sendung. Der zweite Wert ist die Startzeit und der dritte Wert ist die Dauer. Angenommen ich bin gerade in der zweiten Sendung mit der ID 309903954330074282. Dann hat die nachfolgende Sendung hier die ID 309903954330075105.
Bei meinem Versuch kommt nur Schwachsinn heraus. Das Ergebnis bei meiner Vorgehensweise:
309903954330074283 1401793200 1800
(Sendung + 1) (Zeit 1. Sendung) (Zeit 1. Sendung)Ich hoffe mal, mir kann da jemand weiter helfen, weil ich da momentan nicht weiter komme.
[autoit]
[/autoit][autoit][/autoit][autoit]
Dim $b1, $b2, $b3, $b4, $b5, $b6, $b1[1][3]_FileReadToArray($PfadT & "ChannelEPG.txt", $b2)
[/autoit]
If Not @Error Then
Dim $nextshow2 = Int($act_Sendungsinfo1) + 1
For $l = 1 to ubound($b2)-1
$aSplit2 = stringsplit($b2[$l], " ")
If $nextshow2 = $aSplit2[1] Then
$b1[0][0] = $nextshow2 ; SendungsID
$b1[0][1] = $aSplit2[2] ; Startzeit
$b1[0][2] = $aSplit2[3] ; Dauer
exitloop
Else
Dim $nextshow2 = Int($nextshow2) + 1
EndIf
Next
MsgBox(4096, "", $b1[0][0] & " " & $b1[0][1] & " " & $b1[0][2]); zur Ergebniskontrolle
EndIfViele Grüße autoiter
-
Das war aber wirklich schon eine sehr ansprechende Arbeit misterspeed
-
Hey KloMeister,
ich finde das Design gar nicht so schlecht. Mir gefallen vor allem die Farben. Ich hab mal ne Frage zur Listview auf der linken Seite. Wie hast du den Header "Loaded Images" mit dem grauen Hintergrund versehen? -
Hallo zusammen
Jetzt habe ich zu diesem Thema noch eine Frage. Ich nutze das nun genau so, um ein neues Fenster aufzurufen. Wenn ich aus diesem Fenster einfach zurück möchte (@SW_HIDE und dann @SW_SHOW), ist der Eintrag aber noch markiert und das vorher ausgewählte Fenster startet sofort wieder.
Wie kann man das verhindern? -
Hey Leute,
ja genau. Dieses Forum ist wirklich ein positives Beispiel in Bezug auf Ausdruck und FreundlichkeitIch werde Fehler in der Hilfe auch melden und mir die Übersetzungsarbeit mal anschauen.
Ich wollte mich nur etwas zurückhalten mit dem Veralbern, denn wir kennen uns ja nicht sooo gut. Da kann ich nicht erwarten, dass jeder Witz so ankommt, wie ich es gemeint habe.
Also weiter so! -
Das war mir bisher gar nicht aufgefallen. Liegt aber wohl daran, dass ich insgesamt, noch sehr wenig gemacht und gelernt habe.
Zum Lustig machen wiederhole ich: War aber nicht böse gemeint, gelle.
Ich werde mich mit solchen Äußerungen, die Freiwillige beleidigen könnten, in Zukunft zurückhalten -
Ja, hab ich auch schon gemerkt. Wunderbar, während man sich über andere lustig macht.
War aber nicht böse gemeint, gelle.
-
Echt geil!
Tut mir leid. Ein gutes Anliegen. Aber der Titel "Fehler in der detschen Hilfe" hat mich erst mal einen Witz vermuten lassen.
Aber da melde ich mich auch nochmal. Letzt hab ich mich auch beim Aufruf der deutschen Hilfe schepp gelacht. Bei irgendeinem Artikel (vielleicht was mit FTP) stand bei einem Parameter asl Erklärung "Keine Ahnung, was das macht"
Das fand ich echt gut.
Gerne helfe ich auch mal bei der Übersetzung. Ich kann zwar kein Autoit, aber Englisch. Wenn das reicht.. -
Du hast Recht misterspeed, ich sollte es wissen, habe es aber nicht gewusst. Die meiste Zeit habt ihr mir Code gezeigt
Tatsächlich, habe ich nicht den Reiter Quellcode gewählt sondern einfach so meinen hineinkopierten Code als Autoit-Code markiert. Das Ergebnis sah ernüchternd aus. Alles war in einer Zeile. Daher habe ich dann einen Spoiler verwendet..
Also Sorry und danke für den Hinweis. Ich konnte den wirklich gebrauchen.
[autoit]
Wiederholung:
[/autoit][autoit][/autoit][autoit]
HotkeySet("{PAUSE}","_pause"); Hier wird die Pause-Taste der Tastatur verwendet. Daher auch {}, aber die Send Befehle kennst du ja.
$pause=False
...
...
...Func _pause()
[/autoit]
$pause= Not $pause
If Not $pause then Return
Do
Sleep(300)
ToolTip('Das Script pausiert gerade', 0, 0); Kannst du freilich weglassen.
Until not $pause
EndFunc -
nur ergänzend zur Pause Funktion (habe das auch von hier), bzw, wie das ohne include machbar ist:
Spoiler anzeigen
HotkeySet("{PAUSE}","_pause")
$pause=False
...
...
...Func _pause()
$pause= Not $pause
If Not $pause then Return
Do
Sleep(300)
ToolTip('Das Script pausiert gerade', 0, 0); Kannst du freilich weglassen.
Until not $pause
EndFunc -
Die Lösung mir dem AT allein scheidet aus.. Wenn ich bei meinem Win8.1 eingebe:
Codeat 18:18 call "C:\Users\User\AppData\Local\Temp\scratch.cmd", dann erhalte ich die Meldung: Der AT-Befehl ist veraltet. Verwenden Sie stattdessen "schtasks.exe". Die Anforderung wird nicht unterstützt.
Also könnte ich aber beides schreiben einen für AT und einen schtasks.exe. Allerdings lohnt sich das nur, wenn man auch einen Task für die aktuelle Minute machen kann. AT unterstützt nur h:min. Und bis zu 59 Sekunden auf das löschen zu warten, ist schlechter als eine Uninstaller Verknüpfung.
Ich probiere das noch aus. Aber nicht sofort. Ich muss erst einmal eine XP Maschine erstellen..Aber wahrscheinlich ist das alles Quatsch. Es ist wohl ein guter Kompromiss, das System abzufragen und entweder einen Task mit schtasks.exe zu erstellen oder eine Verknüpfung zu erstellen, wenn XP im Einsatz ist. Gibt es eh nicht mehr lange
-
Danke für eure Ratschläge
UEZ
Genau das hatte ich schon probiert. Allerdings wird die batch gar nicht gestartet, wenn der bitdefender läuft. In der Richtung brauche ich also nicht weiter forschen.Spoiler anzeigen
:blub
tasklist | findstr /i programm.exe > 0
if %errorlevel%==0 goto :blub
...@gmmg
Klar, das könnte ich tun. Ich würde mir für mich aber gar nicht die Mühe machen, sondern wollte das Programm weitergeben. Ist zwar ein absolut randständiges Ding, und wahrscheinlich auch nicht die Mühe wert, aber interessant ist es doch.Ich habe mir auch gedacht, ich könnte immer prüfen, ob die scratch.cmd schon da ist, wenn nicht, sollte sie ins Temp schreiben. Dann wäre das direkte deinstallieren immer möglich, wenn die Datei nicht gerade erstellt wurde. Wenn sie gerade erstellt wurde, dann würde ich nur einen Link zur scratch.cmd erstellen, mit der das Programm gelöscht werden könnte..
Aber das ist natürlich keinesfalls perfekt. Deshalb muss ich erst einmal dem Vorschlag von misterspeed nachgehen. Weil ich an anderen Sachen weitergemacht habe, konnte ich nicht nach den AT tasks schauen. Das schaue ich mir aber noch an.
-
Aber selbst wenn das mit Bitdefender so klappen sollte ist das natürlich keine Garantie, dass es immer so klappt. Jeder Virenscanner arbeitet anders, wenn es um die Verhaltensanalyse geht, da kann schon ein Update reichen um eine vorher funktionierende Methode ebenfalls zu blockieren.
Ja, das bleibt ein Problem. Hätte ich nicht den bitdefender, hätte ich dieses Problem nicht einmal bemerkt. Bei AVG und Antivir klappt es (momentan).
Außerdem habe ich mich im Forum umgeschaut, wegen dem Taskmanager und da stand in einem Thread, dass der Weg, der dort beschrieben wird nur ab win7 vielleicht ab vista ginge. Ich denke mir, bei so vielen Problemen lohnt sich die Arbeit einfach nicht..
Auf meine Weise ist es nicht elegant, aber ich habe wenigstens die Gewissheit, dass es funktioniert.
-
Hier noch meine Rückmeldung.
Mein Virenscanner ist recht hartnäckig. Es klappt bei mir nicht einmal, wenn ich die cmd per fileinstall mit dem Programm mitliefere. Daher erstelle ich jetzt nach dem Schreiben nur noch eine Verknüpfung auf dem Desktop um Verwirrungen zu vermeiden. Die muss der User selbst ausführen und Virenscanner bleiben sicher still.Spoiler anzeigen
Func _SelfDelete()
Local $cmdfile
FileDelete(@TempDir & "\scratch.cmd")
$cmdfile = ':loop' & @CRLF _
& 'del "' & @ScriptFullPath & '"' & @CRLF _
& 'if exist "' & @ScriptFullPath & '" goto loop' & @CRLF _
& 'del ' & @TempDir & '\scratch.ico' & @CRLF _
& 'del ' & @DesktopDir & '\scratch.cmd.lnk' & @CRLF _
& 'del ' & @TempDir & '\scratch.cmd'
FileWrite(@TempDir & "\scratch.cmd", $cmdfile)
FileCreateShortcut(@TempDir & "\scratch.cmd", @DesktopDir & "\scratch.cmd.lnk", @TempDir, "", "ScratchTest", @TempDir & "\scratch.ico")
MsgBox(0, "ScratchTest", "Auf dem Desktop befindet sich nun ein Uninstaller. Führe diesen bitte aus.", 3)
EndFuncDanke nochmal.
-
Jap, es ist mein Bitdefender Antivirus, der das Verhalten blockiert hat! Ich hatte ihn schon auf Spielmodus (mehr bietet er nicht an). Dabei blockiert er wohl alles, meldet es nur nicht mehr. (Macht eigentlich Sinn, ich hatte aber keine Ahnung). Nach dem Abschalten des Spielemodus hat er mir gemeldet, dass ein verdäschtiges Verhalten unterbunden wurde.
Ich werde mal testen wie es ausschaut, wenn ich die cmd vom Programm erstellen und ein weiteres Script starte, das wiederum die scratch.cmd ausführt.
Danke schonmal
-
Verdammt. eben habe ich das mal in virtuellen Maschinen mit Win 7 (x86 und x64) gestestet. Bei beiden Systemen klappt meine suicide.exe, in der nur der Code steht, wie du ihn auch hast, Oscar. Dort klappt das!
Wahrscheinlich geht es da auch ohne den eingefügten Backslash.Könnte mir jemand mit Win 8.1 x64 den Gefallen tun das Script mal zu einer exe kompilieren, um zu sehen, ob diese bei Ausführung gelöscht wird? Das wäre sehr nett.
[autoit]_SelfDelete()
[/autoit][autoit][/autoit][autoit]Func _SelfDelete()
[/autoit]
Local $cmdfile
FileDelete(@TempDir & "\scratch.cmd")
$cmdfile = ':loop' & @CRLF _
& 'del "' & @ScriptFullPath & '"' & @CRLF _
& 'if exist "' & @ScriptFullPath & '" goto loop' & @CRLF _
& 'del ' & @TempDir & '\scratch.cmd'
FileWrite(@TempDir & "\scratch.cmd", $cmdfile)
Run(@TempDir & "\scratch.cmd", @TempDir, @SW_HIDE)
EndFunc -
Das Programm beendet sich nach einigen Augenblicken. Danach Passiert nichts weiter.
Wenn ich dann manuell die scratch.cmd starte (anklicke), wird das Programm auch gelöscht. Es funktioniert wie gesagt auch, wenn die scratch.cmd nicht in der gleichen Sitzung geschrieben werden musste, sondern schon im Ordner ist und nur vom Programm ausgeführt werden muss..
Also scheint das Programm die .cmd nicht sofort nach dem Schreiben, starten zu können. An dieser Stelle liegt das Problem. Ich habe aber keine Ahnung, was es zu ändern gilt
Also bei dir gehts Oscar?!? Könnte es an meinem System liegen? Ich nutze Win 8.1 x64.
[autoit]
Das Script aus deinem vorletztem Eintrag funktioniert bei mir nur bei einem nicht kompiliertem Script. Genau das als Script kompiliert geht nicht.
Wenn ich Zeile 5 lösche, dann klappt es bei der zweiten Ausführung:FileDelete(@TempDir & "\scratch.cmd")
[/autoit]Entspricht genau der Beobachtung mit meinem Programm.
-
Ach sorry, das habe ich beim Schreiben vergessen.
Nein, das war das erste, was ich korrigiert habe. Lustigerweise ging es im Script sogar ohne die Backslashs.
Dann habe ich noch den Del Parameter /F ausprobiert und einen timeout in die batch schreiben lassen.
Das lief dann so: Programm führt batch aus, beendet sich, nach zehn Sekunden startete der erste Durchgang löschen. Hat aber alles nicht funktioniert.
Funktioniert das denn bei anderen mit kompilierten exe Dateien?