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. Micha_he

Beiträge von Micha_he

  • Externe au3 Datei via Include wird nicht gezogen

    • Micha_he
    • 2. August 2012 um 17:29

    In die Include-Datei gehört ganz sicher schon mal keine "while 1 - wend"-Schleife. Nur Variablen-Deklarationen & Funktionen.

    Du must Dir das vorstellen, das die per "#Include" eingefügte Datei,einfach in dein Hauptscript kopiert wird. Stell die vor, was die While-Wend-Schleife an der Stelle verursacht !

    Die in der Schleife behandelten Abfragen musst Du mit ins Hauptscript oder in die Funktion packen.

  • Externe au3 Datei via Include wird nicht gezogen

    • Micha_he
    • 1. August 2012 um 17:08

    Und dein "admin.au3", bzw. die Funktion "_Admin()" enthält kein "Exit"-Befehl ?
    Am besten Du stellst die "admin.au3" mal mit ein. Ich tippe darauf, das dort der Fehler ist.

    Und normal sollten die #include's am Anfang stehen. Wenn das Script später kompiliert ist, wäre es völlig egal wo Du es hinschreibst, weil es vor dem Kompilerlauf in das Script integriert wird.

  • FileRead kann icacls Export nicht auslesen

    • Micha_he
    • 1. August 2012 um 15:41
    Zitat von bjoerni

    Wüsste nicht wie ich das herrausfinden kann, du?

    Zum Beispiel öffnen mit RJ TextEd
    und im Menue unter "\Format\Encoding" !

  • Uppercase bei StringRegExpReplace Backreference

    • Micha_he
    • 29. Juli 2012 um 19:26

    Ich möchte per StringRegExpReplace() diverse Zeichenfolgen ändern. Unter anderem soll nach einer bestimmten Zeichenfolge (hier z.B. "zzz.") ein Leerzeichen eingefügt werden und da anschließende Zeichen (Backreference $1 im u.a. Beispiel) groß geschrieben (Uppercase) werden.

    Spoiler anzeigen
    [autoit]

    $text = "abc def - 123 zzz.dummy xyz.test - aaa zzz.nochmal bbb" & @CRLF & "weitere Zeile mit zzz.weiter gehts." & @CRLF
    $text = StringRegExpReplace($text, "(?i)zzz\.(\w)(\w*)([\s\\])", "zzz. $1$2$3")
    msgbox(0,"",$text)

    [/autoit]

    Leider kann AutoIt kein "\U" für Uppercase in der Backreference.
    Hat jemand eine brauchbare Idee, ohne auf den Einsatz von StringRegExpReplace() zu verzichten ?

  • PDF Datei nach Wort durchsuchen und dieses dann als Dateiname verwenden und die Datei umbenennen.

    • Micha_he
    • 23. Juli 2012 um 21:33
    Zitat von Braintee

    Was ich jetzt gemerkt habe, das das Programm immer dann abstürzt wenn ich die RunWait Zeile drin lassen. Sobald ich die entferne stützt zwar das Programm nicht mehr ab aber die Datei wird trotzdem nicht konvertiert.

    Stop, lass mich überlegen ?
    Vielleicht weil der Befehl den Du in dem AutoIt-Script mit der RunWait()-Zeile ausführst, die von die selbst vorgeschlagene Kommandozeile, mit dem von Dir genannten Programm "textaxtract.exe", startet !!

    Warum wird also wohl nichts konvertiert, wenn Du die Zeile auskommentierst ?

    P.S.: Hast Du die Kommandozeile, welche sich nach einem Programmdurchlauf (auch wenn es abstürzt) in der Zwischenablage befindet, mal in einer "Eingabeaufforderung" gestartet ? Und was passiert dort ? Ich glaube Du versuchst etwas mit AutoIt zu realisieren, was grundlegend irgendwo ein Problem aufweist.
    Probiere einfach mal die Konvertierung einer einzelnen Datei per "Eingabeaufforderung" und schreibe anschließend den genauen Befehl auf und wie der aktuelle Ordner war, als Du ihn erfolgreich ausgeführt hast.

  • PDF Datei nach Wort durchsuchen und dieses dann als Dateiname verwenden und die Datei umbenennen.

    • Micha_he
    • 19. Juli 2012 um 19:59

    Ich weiß ja nicht ob es noch von Interesse ist. Aber ersetze mal die bekannten 3 Zeilen gegen folgendes:

    [autoit]

    $sCmd = '"C:\Program Files (x86)\Two Pilots\PDF2Text Pilot\textextract.exe" ' & $s_Path & $s_Ext & $a_List[$i] & " /to " & @TempDir & "\out.txt"
    ClipPut($Cmd)
    RunWait($sCmd, "C:\Program Files (x86)\Two Pilots\PDF2Text Pilot")

    [/autoit]

    Sie enthält 2 Änderungen. Erstens wird das Kommando statt per MsgBox anzuzeigen in die Zwischenablage kopiert. So kannst Du eine eigene Kommandozeile öffnen und dort den Befehl testen. Fehlende Adminrechte schließe ich mal aus, weil Du ja schriebst das Du das "textextract.exe" ja bereits (wohl unter gleichem Benutzer/gleiche Rechte) getestet hast und es dort lief.

    Als mögliche Lösung ist die Änderung 2.
    Der 2te Parameter des RunWait() ist das Arbeitsverzeichnis. Unter Umständen benötigt der Befehl, Daten aus Unterverzeichnissen, welche er ohne das Arbeitsverzeichnis nicht findet. Default ist nämlich das Script-Verzeichnis !

    Gruß
    Micha_he

  • Msgbox position ändern

    • Micha_he
    • 17. Juli 2012 um 11:52

    Das Problem hatten schon viele !
    Während Deine MsgBox angezeigt wird, STEHT das Script. Wie soll also nun noch der nachfolgende Befehl ausgeführt werden ?

    Lösungen: Eigene GUI als MsgBox nutzen (Vorschläge findest Du wahrscheinlich hier im Forum schon einige) oder ein zweites (im Vorfeld als EXE kompiliertes) Script in den Hintergrund starten, welches nur auf die MsgBox wartet, diese verschiebt (WinMove) und sich dann beendet.

    Hier z.B.:Link

  • PDF Datei nach Wort durchsuchen und dieses dann als Dateiname verwenden und die Datei umbenennen.

    • Micha_he
    • 15. Juli 2012 um 17:47

    Ersetze mal Deine RunWait-Zeile durch:

    [autoit]

    $sCmd = '"C:\Program Files (x86)\Two Pilots\PDF2Text Pilot\textextract.exe" ' & $s_Path & $s_Ext & $a_List[$i] & " /to " & @TempDir & "\out.txt"
    Msgbox(0,"",$sCmd)
    RunWait($sCmd)

    [/autoit]

    Dann wirst Du mindestens schon einmal feststellen, das Deine Variablen "$s_Path & $s_Ext & $a_List[$i]" in dieser Reihenfolge etwas wie:

    "c:\install.pdfdemo.pdf" ergibt ! Was willst Du damit im Befehl erreichen ?

    Wenn Du den Filterparameter vom _FileListToArray()-Befehl nutzt, erhälts Du schon einmal nur die PDF's. Wenn Du dann die Variable vernünftig zusammensetzt, müsste etwa dies dabei herauskommen:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <File.au3>
    Global Const $s_Path = "c:\install" ; Verzeichnis, in dem gesucht werden soll
    Global Const $s_Ext = '*.pdf' ; Dateiendung
    Global Const $s_Search = 'Statusprotokoll'
    Global $a_Reg, $a_List = _FileListToArray ($s_Path, $s_Ext, 1) ; Ein Array aller PDF's im Ordner wird erstellt

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

    For $i = 1 To $a_List[0]
    $sCmd = '"C:\Program Files (x86)\Two Pilots\PDF2Text Pilot\textextract.exe" ' & $s_Path & '\' & $a_List[$i] & " /to " & @TempDir & "\out.txt"
    ;MsgBox(0,"",$sCmd) ; Zum Debuggen das ";" ganz am Anfang entfernen !
    RunWait($sCmd)
    $a_Reg = StringRegExp (FileRead (@TempDir & "\out.txt"), $s_Search & '(...)', 1)
    FileDelete(@TempDir & "\out.txt")
    ; (-1) ... wird nach dem Wort und drei nachfolgenden Zeichen gesucht
    If IsArray ($a_Reg) Then
    ; (-1) Falls das Wort gefunden wurde...
    FileMove ($s_Path & '\' & $a_List[$i], $s_Path & '\' & $a_Reg[0] & $s_Ext, 1)
    ; (-1) ... wird die Datei umbenannt
    EndIf
    Next

    [/autoit]
  • PDF Datei nach Wort durchsuchen und dieses dann als Dateiname verwenden und die Datei umbenennen.

    • Micha_he
    • 15. Juli 2012 um 13:25

    Außerdem sollte man immer die Leerzeichen bei Pfadangaben im Hinterkopf behalten.

    In der RunWait-Angabe solltest Du dich außerdem entscheiden:
    Entweder "@ScriptDir" oder "C:\Program Files (x86)". Wo liegt denn nun das "textextract.exe" ?

    Ausgehend davon dann,
    Also z.B. statt:

    [autoit]

    RunWait("C:\Program Files (x86)\Two Pilots\PDF2Text Pilot\textextract.exe " & $s_Path & 'c:\install\' & $a_List[$i] & " /to " & @TempDir & "\out.txt")

    [/autoit]

    unter Umständen lieber:

    [autoit]

    RunWait('"C:\Program Files (x86)\Two Pilots\PDF2Text Pilot\textextract.exe" ' & $s_Path & 'c:\install\' & $a_List[$i] & " /to " & @TempDir & "\out.txt")

    [/autoit]

    (Man beachte jeweils die einfachen/doppelten Anführungszeichen !)

    Außerdem ergibt "$s_Path & 'c:\install\'" aus Deinem Beispielscript, den String "c:\install\c:\install\", was auch verkehrt sein sollte ;)

  • PDF Datei nach Wort durchsuchen und dieses dann als Dateiname verwenden und die Datei umbenennen.

    • Micha_he
    • 13. Juli 2012 um 12:56

    Wenn das mit Deinen PDF's so mit "textextract.exe" klappt, brauchst Du doch nur noch die Kommandozeile in $var seinen Scriptvorschlag einbauen. Versuch doch einfach mal etwas und sag uns was nicht daran geht ! Oder willst Du ein fertiges Script von uns haben ?

    Einfach z.B. in $var seinem Scriptvorschlag die Zeile 13 gegen folgende austauschen (ungetestet):

    [autoit]

    RunWait(@ScriptDir & "\textextract.exe " & $s_Path & '\' & $a_List[$i] & " /to " & @TempDir & "\out.txt"
    $a_Reg = StringRegExp (FileRead (@TempDir & "\out.txt"), $s_Search & '(...)', 1)
    FileDelete(@TempDir & "\out.txt")

    [/autoit]

    Und wenn dann etwas nicht klappt, pack mal eine "demo.pdf" mit an den Beitrag, informiere uns wo wie "textectract.exe" herbekommen und dann kann man weiter schauen....

  • String Wörter zusammensetzen

    • Micha_he
    • 13. Juli 2012 um 10:52

    Nach dem ersten StringSplit() hast Du ab dem 2. Arrayelement ein führendes Leerzeichen !
    Dies wird im RegEx als erstes Wort erkannt.

    Ggf. einfach vorher mit StringStripWS(xxx,1) entfernen.

  • PDF Datei nach Wort durchsuchen und dieses dann als Dateiname verwenden und die Datei umbenennen.

    • Micha_he
    • 13. Juli 2012 um 09:37

    Wir müssten uns schon auf eine gemeinsame Ausgangsposition einigen.

    PDF2TXT kann meist nur den "reinen Text" aus dem PDF exportieren, was also hier nicht hilft.
    Eine Freeware-Lösung (z.B. auf Basis von "Tesseract") scheitert meiner Meinung nach am Format PDF. Man müsste also erst einmal PDF > Bild > Tesseract. Oder hat jemand eine brauchbare PDF-OCR-Lösung als Freeware ?

    Und wenn Braintee eine kommerzielle OCR einsetzt, dann wäre sein Problem ja nur noch, die Textstelle finden und extrahieren. Dazu sollte er uns dann schon einen Beispieltext (Ergebnis seiner OCR-Soft) bereitstellen.

    Oder liege ich hier völlig falsch ?

    Gruß
    Micha_he

  • "Bild aufgenommen am" auslesen

    • Micha_he
    • 11. Juli 2012 um 17:11

    Hier ein Beispiel mit einer EXIF-UDF (Original mit Fehler im englischen Forum gefunden), falls es sich um JPEG-Bilder handelt:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Edit: funkey's Lösung klappt bei mir auch, nur muss bei mir der zweite Parameter "Aufnahmedatum" lauten !

    Dateien

    EXIF_Example.au3 176 Byte – 375 Downloads
  • USB-Port ansteuern

    • Micha_he
    • 9. Juli 2012 um 19:29
    Zitat von BigRox

    das ist ja das schöne an dem von mir vorgeschlagen Teil.
    Es verfügt über alle Statusleitungen.

    Gut da gebe ich Dir recht, ich habe mir die genauen technischen Daten dieses speziellen Wandlers nicht angesehen.

  • Counter zählt nicht runter

    • Micha_he
    • 9. Juli 2012 um 17:07

    Das meinte er nicht sondern seinen Text

    Zitat

    Grund: Ich muss aus der Localen Variable eine Globale machen, dann geht es

    Welcher in Hellgrau am Ende seines ersten Post's steht, aber allen kaum aufgefallen ist. Ich muss es auch erst suchen, nachdem ich seinen Kommentar nicht verstanden habe.

  • Counter zählt nicht runter

    • Micha_he
    • 9. Juli 2012 um 15:23

    Weil

    [autoit]

    If $var=""

    [/autoit]

    und

    [autoit]

    If $var=0

    [/autoit]

    unter AutoIt nunmal identisch ist, wenn die Variable "Leer" ist. Das wird Du nicht ändern.

    Für Deinen ersten Fall würde ich einfach

    [autoit]

    If StringLen($var) = 0

    [/autoit]

    nehmen.

  • Counter zählt nicht runter

    • Micha_he
    • 9. Juli 2012 um 11:44

    Du definierts die Variable $var_onlinezeitcounter in der Funktion LOCAL neu, damit ist sie immer LEER und startet immer wieder mit dem Wert der Variablen $var_onlinezeit.

    Ich würde, wenn der Counter GLOBAL sein soll, die Zeile 2 mal löschen.

  • USB-Port ansteuern

    • Micha_he
    • 8. Juli 2012 um 23:54

    Nur haben diese USB-Com-Wandler meist gar keine Statusleitungen !

    Und mit den vorhandenen Leitungen RX/TX/Vcc/GND lässt sich nicht so einfach ein brauchbares Signal für eine Treiberstufe erzeugen.

  • Default-Wert mit Enter übernehmen

    • Micha_he
    • 7. Juli 2012 um 19:41

    In einer GUI kann ja immer nur eine Aktion mit der ENTER-Taste passieren !

    Wen aber in den Eingabefelder alles mit korrekten Werten bereits gefüllt ist, könntest Du einen Button mit dem "Style" $BS_DEFPUSHBUTTON belegen. Dieser Button wird dann zum Default-Button, der mit ENTER ausgelöst werden kann.

  • upload von einer Datei über FTP

    • Micha_he
    • 7. Juli 2012 um 15:13

    Bei mir Win7 64bit gehts es wie schon einmal erwähnt ohne Probleme und ohne Adminrechte. Win7 ist nicht speziell verändern und arbeitet mit UAC. Nur damit Du etwas zum Vergleichen hast.

    Gruß
    Micha_he

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™