1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. treFFnix

Beiträge von treFFnix

  • In Textdatei suchen

    • treFFnix
    • 15. März 2017 um 13:26

    Hallo, wo ihr gerade beim Thema "in Textdatei suchen" seid...

    habe hier auch einen Beitrag für diese Seite. Es ist ein Tool, was Textdateien durchsucht, und Zeilen, die eine bestimmte Zeichenkette enthalten (einstellbar) in eine andere Datei "Ergebnisdatei" schreibt.

    Ich zum Beispiel, habe damit Logdateien mit mehreren Tausenden Zeilen durchsucht und mir wichtige Zeilen rausgefiltert.
    Ich habe die erste Version auch mit Zeilenweisen "StringInStr"... das hat aber 100x länger gedauert, als die Lösung die ich gestern mit _ArraySearch erarbeitet habe:

    C
    #include <Array.au3>
    #include <File.au3>
    
    
    OnAutoItExitRegister("_OnExit")
    
    
    Global $debugmodus = 0
    
    
    Global $suchstring
    Global $dateiname_Ergebnisdatei
    Global $enddateiname
    
    
    Global $file2
    
    
    Global $aDatei_eingelesen[1]
    Global $aText_extrahiert[1]
    
    
    Global $Suchoptionen
    
    
    ;Dateien auswählen
    Global $files[1], $akt_file = ""
    While 1
    	$akt_file = ""
    	$akt_file = FileOpenDialog("Datei wählen", @ScriptDir, "All (*)", 4)
    	If $akt_file = "" Then
    		ExitLoop(1)
    	ElseIf StringInStr($akt_file, "|") Then
    		Local $multiselsected = StringSplit($akt_file, "|")
    		For $temp_i = 2 To $multiselsected[0]
    			_ArrayAdd($files, $multiselsected[1] & "\" & $multiselsected[$temp_i])
    		Next
    	Else
    		_ArrayAdd($files, $akt_file)
    	EndIf
    WEnd
    _ArrayDelete($files, 0)
    $files = _ArrayUnique($files)
    If Not IsArray($files) Then
    	MsgBox(16, "Beende", "Es wurde keine zu durchsuchenden Dateien angegeben", 2)
    	Exit
    EndIf
    
    
    ;Eingeben lassen, was gesucht werden soll
    Global $akt_suchstring, $suchstrings[1]
    
    
    $akt_suchstring = InputBox("Zeichenkette", "zu suchende Zeichenkette:")
    If $akt_suchstring = "" Then
    	MsgBox(16, "Beende", "Es wurde kein Suchstring angegeben", 2)
    	Exit
    Else
    	_ArrayAdd($suchstrings, $akt_suchstring, Default, @CRLF)
    	$Suchoptionen = $akt_suchstring
    EndIf
    
    
    While $akt_suchstring <> ""
    	$akt_suchstring = InputBox("weitere zu Suchende Zeichenkette eingeben", "zu suchende Zeichenkette angeben: " & @CRLF & "ESC bzw. Abbrechen = keine weitere Zeichenkette")
    	If $akt_suchstring <> "" Then
    		_ArrayAdd($suchstrings, $akt_suchstring, Default, @CRLF)
    		$Suchoptionen &= ", " & $akt_suchstring
    	EndIf
    
    
    WEnd
    
    
    _ArrayDelete($suchstrings, 0)
    $suchstrings = _ArrayUnique($suchstrings)
    
    
    
    
    ;Dateiname für die Ergebnisdatei
    $dateiname_Ergebnisdatei = InputBox("Dateiname Ergebnisdatei angeben", "Dateiname für die Ergebnisdatei angeben: " & @CRLF & "z.B.: Ergebnisse", "Ergebnisse")
    $enddateiname = StringReplace($dateiname_Ergebnisdatei, "\", " ")
    $enddateiname = StringReplace($enddateiname, "/", " ")
    $enddateiname = StringReplace($enddateiname, ":", " ")
    $enddateiname = StringReplace($enddateiname, "*", " ")
    $enddateiname = StringReplace($enddateiname, "?", " ")
    $enddateiname = StringReplace($enddateiname, "<", " ")
    $enddateiname = StringReplace($enddateiname, ">", " ")
    $enddateiname = StringReplace($enddateiname, "|", " ")
    $enddateiname = StringReplace($enddateiname, Chr(34), " ")
    $file2 = @ScriptDir & "\" & $enddateiname & ".txt"
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    ;Jede Datei einlesen und dies nach dem Suchkritieritum durchsuchen
    Global $Ergebnis_indexe[1], $trefferanzahl = 0, $akt_pos = -1, $next_hit[1], $pos_gemerkt, $next_pos, $Ergebnisse[1]
    For $temp_i = 1 To $files[0]
    	If IsArray($aDatei_eingelesen) Then
    		ReDim $aDatei_eingelesen[1]
    		ReDim $next_hit[1]
    	EndIf
    
    
    
    
    	If FileExists($files[$temp_i]) Then
    		ToolTip($temp_i & " / " & $files[0] & " - " & $files[$temp_i], MouseGetPos(0), MouseGetPos(1), "Datei einlesen " & $temp_i & " / " & $files[0])
    		_FileReadToArray($files[$temp_i], $aDatei_eingelesen)
    		If IsArray($aDatei_eingelesen) Then
    			redim $Ergebnis_indexe[1]
    
    
    			For $temp_j = 1 To $suchstrings[0]
    				ToolTip("Datei: " & $files[$temp_i] & @CRLF & "Suche nach: " & $suchstrings[$temp_j], MouseGetPos(0), MouseGetPos(1), "Datei durchsuchen: " & $temp_i & " / " & $files[0])
    
    
    				$akt_pos = _ArraySearch($aDatei_eingelesen, $suchstrings[$temp_j], 0, 0 ,0, 1)
    				If $akt_pos <> -1 Then
    
    
    					_ArrayAdd($Ergebnis_indexe, $akt_pos, Default, @CRLF)
    					$trefferanzahl += 1
    
    
    					While $akt_pos <> -1
    						$akt_pos = _ArraySearch($aDatei_eingelesen, $suchstrings[$temp_j], $akt_pos + 1, 0 ,0, 1)
    						If $akt_pos <> -1 Then
    							_ArrayAdd($Ergebnis_indexe, $akt_pos, Default, @CRLF)
    							$trefferanzahl += 1
    						EndIf
    
    
    					WEnd
    				EndIf
    
    
    			Next
    
    
    			_ArraySort($Ergebnis_indexe)
    			If $temp_i = 1 Then
    				_ArrayAdd($Ergebnisse, "gesuchte Zeichenfolgen: '" & $Suchoptionen & "'" , Default, @CRLF)
    				_ArrayAdd($Ergebnisse, "Insgesamt gefundene Zeilen: " & $trefferanzahl )
    				_ArrayAdd($Ergebnisse, "" )
    			EndIf
    
    
    			If UBound($Ergebnis_indexe, 1) - 1 > 0 Then
    				_ArrayAdd($Ergebnisse, "[Datei '" & $files[$temp_i] & "' - " & UBound($Ergebnis_indexe, 1) - 1 & " Zeilen]:" )
    				For $temp_j = 1 To UBound($Ergebnis_indexe, 1) - 1
    					_ArrayAdd($Ergebnisse, $aDatei_eingelesen[$Ergebnis_indexe[$temp_j]], Default, @CRLF)
    				Next
    				_ArrayAdd($Ergebnisse, "")
    
    
    			EndIf
    		EndIf
    	EndIf
    Next
    
    
    ;~ _ArrayDisplay($Ergebnisse, "$Ergebnisse")
    
    
    
    
    
    
    If $trefferanzahl >= 1 Then
    	$Ergebnisse[2] = "Insgesamt gefundene Zeilen: " & $trefferanzahl
    	ToolTip("")
    	_FileWriteFromArray($file2, $Ergebnisse, 1)
    	msgbox(0,"Fertig","Ergebnisdatei wurde erstellt: " & @CRLF & @CRLF &  $file2  & @CRLF & @CRLF & "Anzahl Treffer: " & $trefferanzahl)
    Else
    	ToolTip("")
    	msgbox(0,"Fertig","nichts gefunden...", 2)
    EndIf
    
    
    
    
    Func _OnExit()
    	Exit
    EndFunc
    Alles anzeigen
  • Desktopbereich sperren bei Windows 7

    • treFFnix
    • 19. September 2014 um 16:01

    WinSetOnTop

    Change a window's "Always On Top" attribute.
    WinSetOnTop ( "title", "text", flag )


    MfG

  • DirCreate bzw. FileCopy erzeugt für Windows nicht zugreifbare Verzeichnisse [Virus?]

    • treFFnix
    • 19. September 2014 um 15:54

    Wenn man das ausführt:

    [autoit]

    DirCreate("C:\Test\\\\................\\\\")

    [/autoit]


    oder

    [autoit]

    FileCopy("C:\test.txt", "C:\Test2\\\\................\\\\", 8 )

    [/autoit]

    dann erstellt AutoIt Ordnernamen, die so sind: "..................."
    Diese Ordnernamen sind mit dem Windows-Explorer nicht erstellbar, nicht umbenennbar,
    ja er stürtzt sogar ab, wenn man nun versucht den Ordner 'C:\Test' bzw. 'C:\Test2' zu löschen.

    PS:
    Sorry ich habe keine 'Bug-section' hier im Forum gefunden, sonst wäre dieser Post auch dort geladnet. :rock:

    Mfg treFFnix


    Edit:

    Man kann die Ordner nur löschen, wenn man dann

    [autoit]

    DirRemove("C:\Test", 1)

    [/autoit][autoit]

    DirRemove("C:\Test2", 1)

    [/autoit]


    verwendet.

  • HotKeys in SciTE

    • treFFnix
    • 19. September 2014 um 15:46

    wenn ich Hotkeys verwende,
    unter anderem passiert es auch (sehr oft) bei F1, oder Strg+j (um zur Funktion zu springen, die aufgerufen wird, wo der cursor gerade steht) verhält es sich,
    als ob ich F5 gedrückt hätte und er startet das programm anstatt die Hotkeyfunktion auszuführen.

    Kennst das jemand?

  • [Autoit-Bildbearbeitung] Farbton erkennen (Hell/Dunkel)

    • treFFnix
    • 8. April 2011 um 11:45

    was mir alternativ auch helfen würde, wäre soetwas wie:

    suche nur variationen von farbe X, aber nicht die farbe X selbst.

    bzw.

    eine funktion die das macht: 'suche alle farben, ausser diese hier' [pixelsearch(links,oben,rechts,unten,BitOr(0xffffff, 0x000000))]

    oder soetwas in der art ....

    kennt sich jemand damit aus / kann mir wer helfen?

    mfg

  • [Autoit-Bildbearbeitung] Farbton erkennen (Hell/Dunkel)

    • treFFnix
    • 8. April 2011 um 10:22

    Hallo liebe Scripter,

    ich muss derzeit ein Bild bearbeiten:

    Dieses Bild soll mal komplett Schwarz/Weiss werden. Ich habe schon angefangen, es per Hand zu bearbeiten, aber ich will mir jetz mal n Bot schreiben, der das macht.

    Ich bin eigentlich auch schon fertig, ich muss nurnoch eine möglichkeit Finden, mit der ich rausfinden kann, ob der Pixel mit den koordinaten x,y 'Hell' oder 'Dunkel' ist, damit ich entscheiden kann, ob ich den Pixel schwarz [mouseclick(mouse1)] oder weiss mache [mouseclick(mouse2)] (ic hhabe paint offen wenn ich das autoit starte)

    kann mir bitte jmd sagen, wie ich rausfinde, ob ein pixel 'hell' oder 'dunkel' ist???

    hier das hab ich bis jetzt:


    Code
    #include <Array.au3>
    #Include <Misc.au3>
    
    
    ;Beim beenden...
    Func _OnExit()
    	Exit
    EndFunc
    
    
    
    
    OnAutoItExitRegister("_OnExit")
    
    
    HotKeySet("{F5}", "_OnExit")
    
    
    
    
    Global $oben_links[2]
    Global $unten_rechts[2]
    Global $farben_ignorieren[1]
    
    
    While Not _IsPressed("04")
    	Sleep(500)
    	ToolTip("linke obere ecke mit MOUSE3 angeben")
    WEnd
    
    
    $oben_links[0] = MouseGetPos(0)
    $oben_links[1] = MouseGetPos(1)
    
    
    While Not _IsPressed("01")
    	Sleep(500)
    	ToolTip("rechte untere ecke mit MOUSE1 angeben")
    WEnd
    
    
    $unten_rechts[0] = MouseGetPos(0)
    $unten_rechts[1] = MouseGetPos(1)
    
    
    
    
    
    
    
    
    While Not _IsPressed("1B")
    
    
    	ToolTip("Farben angeben, die nicht beachtet werden sollen" & @CRLF & "Mouse3 = hinzufügen" & @CRLF & "ESC = fertig")
    
    
    	If _IsPressed("04") Then
    		_ArrayAdd($farben_ignorieren, PixelGetColor(MouseGetPos(0),MouseGetPos(1)))
    		MsgBox(0,"","Farbe wurde hinzugefügt")
    	EndIf
    	Sleep(500)
    WEnd
    
    
    
    
    tooltip("")
    
    
    
    
    For $temp_y = $oben_links[1] To $unten_rechts[1]
    	For $temp_x = $oben_links[0] To $unten_rechts[0]
    		TrayTip("status","höhe: " & $temp_y & " / " & $unten_rechts[1] &@CRLF & "breite: " & $temp_x & " / " & $unten_rechts[0] &@CRLF & "Beenden: F5", 1111111)
    		If _ArraySearch($farben_ignorieren,PixelGetColor($temp_x, $temp_y) ) < 1 Then MouseClick("LEFT", $temp_x, $temp_y, 1, 1)
    	Next
    Next
    Alles anzeigen


    :?: :?: :?:

  • Namen von Netzwerkverbindungen auslesen

    • treFFnix
    • 29. Januar 2011 um 03:29

    ........

  • Namen von Netzwerkverbindungen auslesen

    • treFFnix
    • 28. Januar 2011 um 17:36

    Hallo zusammen,

    ich habe vor eine GUI zu machen, in der man eine der Netzwerkverbindungen auswählt und dann kann man eine IP-Adresse, Standartgateway, Subnetmaske und DNS eingeben.
    Aber ich weiss leider nicht, wie man sich eine Liste der verfügbaren Netzewrkverbindungen in ein Array o.ä. holen kann.

    Kann mir da bitte jemand helfen??

    Gruß,
    treFFnix

    Edit:
    habs gefunden:
    [ gelöst ] Namen der Netzwerkverbindungen anzeigen und eventuell ändern

    thx trotzdem

  • Run für exe mit Leerzeichen und Parameter

    • treFFnix
    • 10. Dezember 2010 um 13:46

    Wenn man leerzeichen im Befehl hat, sollte man ihn mit

    Code
    Chr(34)


    umschließen: Chr(34) = "

    Beispiel:

    Code
    Global $Script = "C:\Program Files\Ordner mit Leer Zeichen\test.sql"
     
    RunWait(Chr(34) & $PostgreSQLpsqlPfad & Chr(34) & " -h  localhost -U postgres -d postgres -p 5432 -f " & Chr(34) &  $Script & Chr(34), @ScriptDir)

    MfG

  • Excel - Sheet duplizieren (heißt in Excel: "Kopie erstellen")

    • treFFnix
    • 12. August 2010 um 10:38

    Danke ;)

  • Excel - Sheet duplizieren (heißt in Excel: "Kopie erstellen")

    • treFFnix
    • 11. August 2010 um 20:25

    hab mir im Moment so beholfen, dass ich in excel folgendes makro rein hab:

    Code
    Sub duplizieren()
    	ActiveSheet.Copy After:=Sheets(Sheets.Count)
    	Sheets(Sheets.Count).Name = "NeuerTabellenName"
    End Sub

    und das mit autoit aufrufe:

    Code
    Local $sheet = @ScriptDir & "\Excelmappe.xls"
    	Local $Obj1 = ObjGet($sheet)
    	$Obj1.Application.Run("duplizieren")

    ... aber das hab ich auch alles nur zusammengesucht/kopiert....
    kennt ihr eine bessere/direktere lösung (ohne ein makro ins excel machen zu müssen)?

    MfG

  • Excel - Sheet duplizieren (heißt in Excel: "Kopie erstellen")

    • treFFnix
    • 11. August 2010 um 19:52

    Hallo,

    ich finde keine passende Lösung/Möglichkeit....
    Alles markieren, kopieren und in ein neu angelegtes Tabellenblatt einfügen ist nicht die Lösung die ich suche.

    könnte mir bitte jemand helfen, der weiß ich zum Ziel komme (Excel - Sheet duplizieren (in Excel: Rechtsklick auf das Tabellenblatt -> Verschieben/Kopieren... -> "Kopie erstellen")) ?

    MfG

  • Treeview FileExplorer

    • treFFnix
    • 21. Juli 2010 um 13:25

    Vielen, vielen Dank lieber Oscar!

    :rolleyes:

  • Treeview FileExplorer

    • treFFnix
    • 20. Juli 2010 um 15:08
    Zitat von Oscar

    Das rekursive einlesen des Inhaltsverzeichnisses einer ganzen Festplatte kann ja recht lange dauern. Wenn man dieses aber in einem Treeview haben will, dann gibt es nur diese Möglichkeit oder man liest das Verzeichnis ebenenweise (eine Verzeichnisebene nach der anderen) ein.
    Aber immer nur eine Ebene sieht nicht so toll aus, weil dann die Verzeichnisse kein Plus-Button haben (als Kennzeichen dafür, dass der Ordner nicht leer ist). Also muss man mindestens zwei Ebenen rekursiv einlesen und das ist (bzw. war :D ) gar nicht so einfach.

    Hallo,

    ich würde gern sofort das gesamte Inhaltsverzeichnis des Rootverzeichnisses einlesen (muss ja nicht die ganze Festplatte sein).

    Ziel:

    Ich möchte einen Ordner angeben (bevor sich das TreeView aufbaut)
    nach drücken des START-Buttons:
    der angegebene Ordner soll sich rekursiv in einem TreeView aufbauen (mit + und Checkboxen vor jedem Ordner und jeder Datei)
    Jeder Ordner soll Standartmäßig Expandiert sein, und jeder Ordner, sowie jede Datei im TreeView soll das Häkchen in der Checkbox haben.

    Das mit Expandieren und SetChecked geht leider nicht, wenn man "nur" zwei Ebenen einliest...
    kann mir jemand helfen?

    MfG

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™