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. msp-holzwurm

Beiträge von msp-holzwurm

  • externe Verschlüsselung einbinden

    • msp-holzwurm
    • 23. Mai 2011 um 20:53

    Hallo All!

    hat einer von Euch schonmal ein externes Verschlüsselungsprogramm in ein Autoit-Teil eingebunden und ist vom TÜV geprüft worden ????

    Das Programmieren und Einhängen z.B. von AESCRYPT (oder ähnlichem) werd ich sicher auf die Reihe bringen (nach 5 Jahren Autoit im Geschäft), eine Methode einen kundenspezifischen Schlüssel zu haben hab ich mir auch schon überlegt (es gibt sicher 2 Daten die nur wir und der Kunde wissen bzw. hat) bzw. könnte ich noch weitere Verschlüsselungsdateien vor Ort ablegen (die können wir auch z.B. monatlich tauschen).

    Flippen die vom TÜV schon aus, wenn die Autoit hören ???

    Dank an alle & Grüße

    Holzwurm

  • Dienstmuster das Funktioniert

    • msp-holzwurm
    • 17. Juni 2010 um 18:47

    Hallo All!

    hab größere Probleme mit Diensten unter Windows Server 2008 64 Bit.

    Hat einer ein funktionierendes Muster der test_service.au3 oder service_example.au3, im englischen Forum gibt es diverses dazu, ich bring aber keine einzige Datei vernünftig zum laufen.

    mir würde schon mal ein Muster langen, das von mir aus alle 2 Sekunden eine Zeile in ein LOG-File schreibt, den Code (was der Dienst machen muß) hab ich ja schon fertig.

    Hab auch schon ein paar Dienste am laufen, aber öfters mal das Problem mit Fehlern in der Ereignisanzeige:
    Dienst ... reagiert nicht

    nehm an, daß ich aufgrund Wissenslücken irgendwas falsch mache, inbes. wo bau ich meine eigene Funktion ein (wenn die beispielsweise 5 Sekunden zum durcharbeiten braucht).


    1000 Dank & Grüße

    German

  • FileGetTime Millisekunden

    • msp-holzwurm
    • 8. März 2010 um 20:49

    Hallo All!

    steh irgendwie auf dem Schlauch, brauch was, daß mir von ner Datei den Erstellungszeitpunkt nicht nur in HHMMSS sondern "feiner" also noch mit Millisekunden angibt.
    Grund:
    ein Sortierprogramm (älteste Datei zuerst) geht jetzt nicht mehr, da der aktuelle Server einfach so viel Dampf unter der Haube hat, daß vielleicht 10 Dateien den identischen Zeitstempel haben.

    denk, auch mit
    _GetExtProperty($Direct,$Filename, $iProp)
    bekomm ich das nicht genauer als mit Sekunden raus.

    Brauch keinen Mustercode, sondern nur mal nen kleinen Tip, wo ich suchen kann.

    (falls das nicht geht, weiß ich schon Abhilfe (vielleicht sollte man da mal ein vernünftiges Sortierprogramm schreiben), nur leider hat ein Tag nur 24h.

    Es Dankt Euch im voraus.

    German

  • Dienstfehler 1053

    • msp-holzwurm
    • 4. Dezember 2009 um 09:41

    Hallo zurück!

    genau das ist der Thread, der mich zum Wahnsinn treibt:

    ca. auf Page 3 unten ist sinngemäß: der Fehler stimmt, ich hab ne neue service.au3 und eine neue service_example gemacht, aber die find ich nirgends.

    Hab die service_example schon am laufen (das $Running mit Wert 1 ist nicht global deshalb kann die main() überhaupt nicht laufen, aber auf einem 2008 64-Bit testsystem hier in der Firma hab ich Probleme beim Dienstbeenden.


    Danke & Gruss


    German

  • Dienstfehler 1053

    • msp-holzwurm
    • 3. Dezember 2009 um 22:07

    Hallo Autoit-Gemeinde

    habe unter Windows 2008 Server 64-bit System öfters Probleme beim beenden eines autoit-Dienstes (der Dienst selbst läuft einwandfrei und funktioniert), beenden dauert ewig und dann kommt Fehlermeldung 1053 (dienst antwortet nichg rechtzeitig auf Start-/Stopanforderung).

    Fehler war auch schon auf Windows 2003 Server unter VM, nur auf meiner Entwicklungsmaschine kann ich den nicht nachvollziehen.


    Hat einer eine aktuelle
    services.au3 und eine service_example.au3 und könnte das mir mal zur Verfügung stellen (im englischen Forum ist der Fehler schon beschrieben und auch von neuen Versionen die Rede, die find ich aber leider nicht, heute schon Stunden wegen des Problems in der Firma gesucht).

    Es dankt Euch

    German

  • DriveMapAdd

    • msp-holzwurm
    • 22. März 2009 um 11:01

    Hallo!

    das Problem könnte sein, daß eine Sicherheitseinstellung auf dem Rechner der den Share, also die Freigabe hat sagt:
    Verbindung zu mir nur als angemeldeter Domänenuser und nicht als System.

    Hab ein vergleichbares Problem (meines läuft auch als Dienst!), ich umschiffe es mit folgendem Trick:
    (Beispiel mit einem Usere namens Postbote)
    Miniprogramm pwinput.exe (dann kommen 2 Fenster)
    einmal geb ich den usernamen postbote ein, in das zwote das Paßwort des Users.

    auf der Platte schreib ich verschlüsselt (hab da noch eine andere Software, aus deren INI-Einstellungen i.V.m. der IP-Nummer ermittele ich ein internes Passwort) eine
    postbote.pw Datei (ca. 30 Zeichen langer, völlig unsinniger Binärcode wenn das einer anschaut)

    mein Dienst ist jetzt in der Lage (da er ja weiß, wie verschlüsselt wird, ein clearpasswd zu machen, Clear-Password)
    und kann sich das Laufwerk als Benutzer Postbote verbinden.
    Das System ist dadurch ziemlich sicher, durch die Verwendung der IP-Nummer kann auch kein "Angreifer" das Passwort durch kopieren der Passwortdatei auf einen fremden Rechner zum laufen bringen.
    (Im Netzwerk kommt der Benutzer Postbote an und damit ist das Problem erledigt).

    Falls Du das ganze unter VM-WARE auf laufen hast, dann sollte unbedingt vor dem DriveMapAdd noch ein ping rein (das wirkt WUNDER), nachdem die VM-WARE Kiste gesichert hat, geht sonst keine Verbindung mehr.


    Du kannst Das Passwort natürlich auch in die Registry schreiben.

    hier ein Code-Schnipsel aus meinem Dienst:
    if $Networkdomain="NotFound" then
    $Laufwerk=DriveMapAdd("",$Networkshare, 0, $Networkuser, $clearpasswd)
    else
    $Laufwerk=DriveMapAdd("",$Networkshare, 0, $Networkdomain & "\" & $Networkuser, $clearpasswd)
    Endif
    ; Netzwerk muss da sein


    Grüße

    msp-Holzwurm
    PS: meld Dich per PM falls Du nicht weiterkommst, würde mich interessieren:
    SAMBA, CIFS oder VM-WARE mit im Einsatz für diese Problematik suche ich weitere "Leidensgenossen"

  • Neuling

    • msp-holzwurm
    • 4. März 2009 um 19:36

    Hallo!

    das mit dem "als Admin" anmelden kommt mir bekannt vor:
    bau Dir folgendes:

    irgendwo auf der Kiste eine Datei (bei mir ist die z.B. transportuser.pw) dadrin liegt das verschlüsselte Passwort (das ist kein Problem mit Autoit), deine EXE kann das Passwort entschlüsseln und Du kannst ein weiteres Kommanda als "run as" laufen lassen oder die Netzlaufwerke verbinden.

    Bei genügend Hirnschmalz (also nicht so viel mit den Schwestern rumflirten) baust Du Dir ne Verschlüsselung mit der IP-Nummer oder IP-Nummernkreise.

    Grüße & viel Spaß hier

    Holzwurm
    PS: hab einige Krankenhöuser in der Kundenliste

  • .txt Dateien besonders auslesen

    • msp-holzwurm
    • 27. Februar 2009 um 22:12

    Hallo Fanboi!

    hier ganz einfach programmiert, ohne jeden Schnickschnack,
    teste das mal durch:

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; test_70.au3 für fanboi
    ; von msp-holzwurm
    ; mal ganze einfach anfangen

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

    #include <Date.au3>
    #include <string.au3>
    #include <array.au3>
    #include <file.au3>

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

    $datelong = @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC ; das ist mal ein vernünftiges Datumsformat

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

    $Version="1.00"
    $Vinfo="test_70 für Fanboi " & $Version
    ; hiermit kann man schön suchen!!

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

    ; Umgebung festlegen
    $SearchDir="f:\x99" ; =Verzeichnis dasz zu durchsuchen ist
    $SearchFiles="*.txt" ; dateityp festlegen

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

    ; Benutzer nach Suchbegriff fragen:
    $Suchbegriff= InputBox($VINFO, "Suchbegriff eingeben.", "")

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

    if StringLen($Suchbegriff) < 1 then
    msgbox(64,$VINFO, "kein Suchgberiff eingeben" & @CR & "ABBRUCH",10)
    exit
    EndIf

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

    $FolderList=_FileListToArray($SearchDir & "\", $Searchfiles,1) ; Flag 2 = nur Ordner
    If (Not IsArray($FolderList)) then
    msgbox(0,$VINFO, "keine Dateien im Suchordner gefunden",10)
    ELSE

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

    For $i = 1 To $FolderList[0]
    ; jetzt kommt eine Datei nach der anderen
    msgbox(0,$VINFO, "prüfe Datei: " & $SearchDir & "\" & $Folderlist[$i],1)

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

    $check01=_SearchinFile($SearchDir & "\" & $Folderlist[$i],$Suchbegriff)
    ; bei Antwort 0 nichts weiter tun
    ; bei Antwort 1 Datei umbenennen

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

    if $check01=1 then
    ; Variable neu setzen, auf aktuelle Zeit
    $datelong=@YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC ; das ist mal ein vernünftiges Datumsformat
    FileMove($SearchDir & "\" & $Folderlist[$i], $SearchDir & "\" & $Folderlist[$i] & $Suchbegriff & "_" & $datelong)

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

    EndIf

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

    Next
    Endif

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

    Func _SearchinFile($File,$Suchbegriff)
    ; Funktion zum Testen, ob der Suchgebegriff enthalten ist
    ; Return 0=nicht gefunden
    ; Return 1=Treffer (beim ersten Treffer, wird nicht weitergesucht)

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

    Dim $myarray
    If Not _FileReadToArray($file,$myarray) Then
    MsgBox(4096,"FEHLER", " Datei " & $textdatei & " nicht gefunden, oder leer")
    Return 0
    EndIf

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

    For $x = 1 to Ubound($myarray) -1 ; jetzt wird das array von Zeile 1 bis zur lezten Zeile eingelesen
    $Zeile=$myArray[$x]
    ; msgbox(0,"ich hab jetzt die Zeile mit folgendem Inhalt:", $zeile)
    if StringInStr($zeile,$Suchbegriff) > 0 then ; Achtung irgenwo in der Zeile gefunden, die Antwort ist die Position
    msgbox(0,$VINFO, "hier hab ich den Suchbegriff drin: " & $zeile)
    Return 1
    EndIf

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

    Next

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

    EndFunc

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

    Danke langt nicht, so ein Kaffee wär schon angebracht!!!

  • .txt Dateien besonders auslesen

    • msp-holzwurm
    • 27. Februar 2009 um 19:56

    Hallo fanboi!

    das ist kein großes Problem, hier gibts auch sicher Hilfe dazu, aber ein bischen sollte vom Fragesteller schon kommen.
    Wo hängst Du jetzt, beim Auslesen des Verzeichnisses oder beim Verarbeiten der Einzeldateien??
    zumindest über den großen Ablauf muß man sich schon gedanken machen.

    Kennst Du grep -l (Unix/linux) der kann z.B. nach allen *.txt mit dem Wort "ERROR" suchen und gibt die Dateinamen aus, langt das evtl. auch schon?? (das wär dann flexibler Einzusetzen).

    Wie soll Dein Input sein, ne Tabelle, ein Eingabefeld, ein Begriff, mehrere Begriffe??

    Grüße

    German

  • Warum AutoIt?

    • msp-holzwurm
    • 19. Februar 2009 um 20:28

    Hallo All!

    denke, die Antwort ist ganz klar:
    im Angebot gibt es mehr oder wenig sinnvolle Mittel vom Betriebssystem (Batch oder Shell) und dann die großen Compiler, nachdem ich mich beim ersten ziemlich eingearbeitet war und einen 40h C-Kurs (sponsored by Arbeitgeber) hinter mich gebracht hatte, war ich wieder im großen schwarzen Loch:
    mit C und Dateihandling, das hat ja der Teufel gesehen, es war einfach viel zu kompliziert mal "schnell" was für ne Fehlerberichtigung zu zaubern.
    Auf der Suche nach der aktuellen gnu-Script Version find ich einen Artikel über Autoit im Internet, zerr mir das Teil und 2h später war ein Analyser für unsere Software fertig (das war der Wahnsinn), heute fast 3 Jahre später läuft das Teil (300 Versionen weiter) bei fast 600 Kundensystem jeden Tag vollautomatisch angesteuert und spuckt einen "Motortest" aus der zentral ausgewertet wird. Auf 5 Systemen bei mir im Rechenzentrum (schlappe 234 Kunden arbeiten hier) können wir den Laden ohne Autoit zumachen, jede Art von Datentransport und Kommunikation zwischen 8 Systemen läuft mit Autoit (des weiteren: grafische Bedien- und Ablaufoberflächen), Protokollierung, automtische Sicherungen und Zipläufe usw.

    Es grüßt Euch

    msp-Holzwurm
    und DANKE an alle hier, die bei den vielen nervigen Fragen immer wieder mit Tips, Anregungen oder Code-Teilen geholfen haben.

  • Dienst stoppen. Ist das Möglich?

    • msp-holzwurm
    • 23. Januar 2009 um 20:26

    Hallo!

    hab damit einiges an praktischer Erfahrung, arbeite mit der Lösung
    net stop "Dienstname"

    das gefährlich ist aber sofort im Script weiterzumachen, das Betriebssystem braucht evtl. einen ganzen Moment bis der Dienst runtergefahren ist. (bei Oracle dauert das evtl. 2 Minuten, wenn da ne große DB rauf- oder runtergefahren wird)

    Zuerst mal suchen: (Registry: HKLM\SYSTEM\CurrentControlSET\Services
    welche EXE hinter dem Dienst steht (der Dienst ist ja technisch gesehen nur ein Trick, damit eine EXE (die keinerlei Bildschirmausgaben macht) dauernd läuft.
    Nach dem Absetzen des net stop Kontrollieren, ob die EXE weg ist.

    mit dem SC kann man übrigens nicht arbeiten, wenn der Dienst z.B. mit autoit programmiert ist und mit dem instsrv.exe und srvany.exe aus dem Ressource-Kit arbeitet!!

    hier mal ein paar Beispiele von mir:


    Func _schedulerrunter()
    $z=1

    while $z < 10
    $befehl='net stop "Prisma Scheduler"'
    Run($befehl, "", @SW_HIDE)

    sleep(5000)
    If ProcessExists("ndSchd32.exe") Then
    Else
    $z=11
    EndIf

    $z=$Z+1
    wend

    EndFunc


    Func _dfueactive()

    $dfue=ProcessExists("nmc32.exe")
    if $dfue <> 0 then
    Return 1
    else
    Return 0
    EndIf
    EndFunc


    für weitere Fragen steh ich gerne zur Verfügung.

    Grüße aus dem verregneten Spessart

    German

  • Function ausführen beim Beenden

    • msp-holzwurm
    • 21. Januar 2009 um 21:28

    Hallo!

    ich hab ein Tool namens shutdown (nehm an, es ist aus dem Ressorce Workshop)

    einfach kleines Autoitscript bauen:
    Dein Programm zuerst, dann
    sleep(2500)
    und dann einen shutdown -s starten

    alles klaro, oder brauchst Du mehr Hilfe??

    Gruß

    German
    Ps: kann sein, daß man mit Autoit direkt auch den Rechner booten lassen kann, aber nachdem ich das Tool auch auf allen Geschäftsservern habe, nehm ich immer das.

  • Dateien mit bestimmtem Dateityp löschen

    • msp-holzwurm
    • 21. Januar 2009 um 21:23

    Hallo Moz!

    statt
    FileDelete($path & $files[$i])
    schreibst du mal (setz das einfach mit; auf Kommentar)
    Msgbox(0,"ich will folgendes löschen", $path & $files[$i])
    rein
    und schaust Dir den angezeigten Pfad an, stimmt der oder fehlt da vielleicht der Backslash zwischen Verzeichnis und Datei??

    sind die Dateien offen (wenn einer z.B. mit dem Acrobat Reader eine info.pdf offen hat, dann kann ich die nicht so einfach löschen)?? (ob das MS-Kommandozeilentool openfiles geht unter Vista muß ich passen)

    Startest du das Programm manuell oder mittels Zeitgesteuertem Befehl (dann bist Du nämlich Benutzer SYSTEM)???

    Das gleiche Problem hast Du, wenn Du als Dienst arbeitest.

    Grüße

    German

  • E-Mail mit Autoit und PHP

    • msp-holzwurm
    • 22. Dezember 2008 um 21:24

    Hallo!

    kenn mich mit PHP nicht aus, habe aber auf 5 Servern ein Überwachungstool mit eMail Funktion.
    Gelöst mit SENDEMAIL (war auch ein tip von hier) ist eine einzige Freeware EXE und funktioniert:
    ALLERERSTE SAHNE

    Grüße

    msp-holzwurm
    PS: das Überwachungstool ist natürlich mit autoit programmiert.

  • Auswerten von DOS-Kommandos

    • msp-holzwurm
    • 17. Dezember 2008 um 22:24

    Hallo!

    sowas geht ganz einfach, aber ohne Hilfe von hier, wäre ich auch verzweifelt.
    (Achtung: $BASEDIR hab ich vorher gestetzt)
    die Ausgabe des DOS-Befehls mußt du in eine temporäre Datei schreiben lassen!!

    _protoutput liest dann die temporäre Datei wieder woanders hin aus, mein Akku ist jetzt ziemlich leer.

    Hab noch ein anderes Beispiel für einen tree (das ist einfach ein praktisches Kommando und läuft auch richtig flott)

    Grüße

    German
    msp-holzwurm

    ==============================================


    Func _zipanprot($zipfile,$PROTFILE)

    ; Inhalt der Zip ans Protokoll hängen:

    Dim $StrTempFiles = _TempFile() ; Name für Temp-Datei erzeugen
    Dim $StrZipFile = $zipfile ; Name der Zipdatei
    $Befehl=" /C" & $BASEDIR & "\unzip.exe -l "

    RunWait(@ComSpec & $Befehl & Chr(34) & $StrZipFile & Chr(34) & " > " & $StrTempFiles, "", @SW_HIDE)


    $fhFiles = FileOpen($StrTempFiles,0)
    While 1
    $Line = FileReadLine($fhFiles)
    If @error Then ExitLoop
    _protoutput($PROTFILE,$line)
    WEnd
    FileClose($fhFiles)


    EndFunc

    ; ####################################################################################################

  • Dienste sind wie "eingefroren", instsrv u. srvany oder sc.exe nehmen??

    • msp-holzwurm
    • 3. Dezember 2008 um 21:49

    Hallo All!

    habe einige Autoit-Programme im Kundenumfeld als Dienste laufen (sauber Programmiert, keine Ausgabe auf dem Desktop schöne Textprotokolle usw).
    Einer der Dienste überwacht das Vorhandensein einer bestimmten Datei, ist die da, mindestens 20 Sekunden alt und läuft ein anderer Prozess nicht, wird eine bestimmte EXE auf dem Kundenserver gestartet.
    (das ist jetzt ca. 6 Monate alt und läuft auf div. Servern).

    Wenn der Server unter VM-WARE eingerichtet ist, hab ich manchmal das Problem, daß mein Dienst zwar frühs noch läuft, aber praktisch nichts mehr tut (ich beende den Dienst über die Dienste-Steuerung und starte den neu: alles läuft butterweich, wie es soll).
    Ursache scheint ein nächtlicher Snapshot des Systems zu sein.

    Kann mir da einer einen Rat geben??? (ich hab auch 3x Win2003 Server unter VM-Ware bei mir im Geschäft laufen mit vergleichbaren Diensten, daß Problem ist hier noch nie aufgetreten)

    am Autoit-Code kanns nicht liegen, denn auf anderen 2003-Servern (nicht unter VM) läufts es einwandfrei.

    Wer hat noch Dienste am laufen, welche srvany.exe und instsrv.exe benutz ihr???

    Wer hat schonmal ne Autoit-EXE mit sc (aus dem ressource-Workshop als Dienst zum Laufen gebracht)????

    Danke & Grüße

    German

    04.12.2008 Ergänzung: hab mir jetzt eine up.bat (net start ...) und eine down.bat (net stop ..) gebaut, die als geplanter Task laufen, damit hat es bei einem der beiden Problemkunden heute funktioniert, das kann es aber doch nicht sein.

  • script kompillieren

    • msp-holzwurm
    • 2. Dezember 2008 um 21:22

    Hallo!

    das Problem mit den Icons (Copyright drauf, oder sonstiges) umschifft man am besten mit eigene machen:
    Hab
    icoFX dazu gefunden (Freeware, einfach auspacken, nix installieren und loslegen)

    https://autoit.de/www.icofx.ro

    Gruß

    German

  • Text in einer grossen Datei ersetzen - wie am schnellsten?

    • msp-holzwurm
    • 2. Dezember 2008 um 20:35

    Hallo Autoirrer!

    wie siehts aus, bin an Deinem Testergebnissen brennend interessiert, hab hier in meiner Sammlung auch noch andere Lösungsmöglichkeiten, wenn richtige "Geräte" von Text-Files da sind.

    Grüße

    German

  • Text in einer grossen Datei ersetzen - wie am schnellsten?

    • msp-holzwurm
    • 27. November 2008 um 21:19

    Hallo AutoIrrer!

    hier mal ein kleiner Ansatz von mir, als Diskussionsgrundlage:

    ich hab ne Testdatei mit 33MB damit gerade durchgenudelt:

    zuerst machst Du Dir ne de.txt mit den Such-Ersetzungsbegriffen:
    access;zugriff
    file;datei
    size;Größe
    owner;Eigentümer

    diese in Dein Arbeitsverzeichnis, meine Textdatei ist die mq573 auch im Arbeitsverzeichnis:

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Beispiel: Einlesen der Datei in ein Array
    ; Zeilenweises abarbeiten
    ; Austausch von gefundenem Text und Ausgabe als STring

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

    #include <Date.au3>
    #include <string.au3>
    #include <array.au3>
    #include <file.au3>

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

    $translatefile=@workingdir & "\de.txt"
    $textdatei=@workingdir & "\mq573"
    $newfile=@workingdir & "\fertig.txt"

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

    $pfile=Fileopen($newfile,1)

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

    ; ***Übersetzungstabelle laden
    Dim $translatearray
    _FileReadtoArray($translatefile,$translatearray)

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

    ; ***

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

    ; ******TEXTDATEI abarbeiten
    Dim $textarray
    If Not _FileReadToArray($textdatei,$textarray) Then
    MsgBox(4096,"FEHLER", " Datei " & $textdatei & " nicht gefunden, oder leer")
    Exit
    EndIf

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

    For $x = 1 to Ubound($textarray) -1 ; jetzt wird das array von Zeile 1 bis zur lezten Zeile eingelesen
    $Zeile=$textarray[$x]
    ; msgbox(0,"ich hab jetzt die Zeile mit folgendem Inhalt:", $zeile)
    $Ausgabe=_checkandreplace($zeile)
    FileWrite($pfile, $Ausgabe & @CRLF)
    Next

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

    FileClose($pfile)

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

    ; *******ENDE TEXTDATEI abarbeiten

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

    Func _checkandreplace($zeile)

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

    For $r=1 to Ubound($translatearray)-1

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

    $Uebersetzzeile=StringSplit($translatearray[$r],";")
    if $Uebersetzzeile[0]=2 then ; Kontrolle, ob die Übersetzungstabellenzeile OK is
    $text_e=$Uebersetzzeile[1]
    $text_d=$Uebersetzzeile[2]
    if StringRegExp($zeile,".*" & $text_e & ".*") then
    $neuezeile=StringReplace($zeile,$text_e,$text_d)
    ; msgbox(0,"Kontrolle ist besser", $neuezeile)
    Return ($neuezeile)
    else
    $neuezeile=$zeile
    EndIf
    else
    $neuezeile=$zeile ; eine Zeile in der Übersetzungstabelle war nicht OK
    EndIf

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

    Next
    Return ($neuezeile)

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

    EndFunc

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


    Viel Spaß damit, bei Problemen: melden


    Grüße

    German
    PS: ich war heute im Laden von sieben frühs bis drieviertel sieben heute abend vor der Mühle gesessen, also nicht auszuschließen, das da irgendein Fehler drin ist, bin nur ein Mensch und keine Maschine.

  • Text in einer grossen Datei ersetzen - wie am schnellsten?

    • msp-holzwurm
    • 27. November 2008 um 20:10

    Hallo!

    hört sich interessant an:
    meine Fragen:

    a, wieviele Zeilen hat so ein Logifle von Dir (nehm mal einen vernünftigen Editor wie z.B. den PFE (der geht wenigstens richtig schnell) und spring mal in die letzte Zeile

    b, wie lange ist ungefähr so ne Zeile?? (sind die alle gleich lang oder von mir aus zwischen 100 und 180 Zeichen??)

    c, kannst Du die Datei noch in ein array laden??

    schau mir das gerne an, hab mit noch größeren "Geräten" zu kämpfen (von nem IBM-Host), aber zu ner vernünftigen Antwort brauch ich erst mehr input.

    Man kann auch die Datei in Teilen in ein Array einlesen (das ist aber schon etwas aufwendiger, wenn die Zeilen nicht identisch lang sind, wenn die alle mit Blank auf der gleichen Länge sind, dann geht das sehr einfach.

    Grüße

    Holzwurm

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™