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

Beiträge von gmmg

  • CSV Merge - zwei Dateien zusammenfügen

    • gmmg
    • 13. März 2023 um 17:59

    Hallo AspirinJunkie,

    ich habe jetzt mal die "parseCSV" Version genommen und auf Semikolon "; "umgeschrieben. Sieht erstmal ganz gut aus.

    Eins ist mir noch aufgefallen. Bei einigen Datensätzen ist noch ein Hochkomma " im Merged drin.

    Anbei nochmal die Dateien mit diesem einen Datensatz zum testen.

    Könnte man denn auch wieder die Texttrennzeichen "" mit in die Merge einfügen?

    Ich hatte auch noch eine Fehlerabfrage im Ursprünglichen Script. Wenn die CSV leer ist, soll nur der FileHeader geschrieben werden. Gibt es bei der parseCSV auch eine Fehlerrückgabe?

    $fileHeader = '"id";"submitdate";"lastpage";"startlanguage";"seed";"token";"startdate";"datestamp";"refurl";"G01Q01";"G01Q02";"G01Q03";"G01Q04";"firstname";"lastname";"email";"attribute_1";"attribute_2"'

    Vielen Dank erstmal an Alle, die sich hier beteiligt haben :)

    Gruß gmmg

    Dateien

    file000.csv.txt 114 Byte – 172 Downloads file001.csv.txt 715 Byte – 173 Downloads
  • CSV Merge - zwei Dateien zusammenfügen

    • gmmg
    • 13. März 2023 um 17:20

    Na da hab ich erstmal was zu lesen :)

    Hab das file 1 nochmal hochgeladen.

    Danke

    Gruß gmmg

  • CSV Merge - zwei Dateien zusammenfügen

    • gmmg
    • 13. März 2023 um 16:01

    Moombas, Trennzeichn ist Semikolon. In den Anführungszeichen steht dann der entsprechende Wert.

    Falls ich morgen nicht gleich Antworten sollte, habe kleine OP :)

  • CSV Merge - zwei Dateien zusammenfügen

    • gmmg
    • 13. März 2023 um 15:50

    Danke für die schnellen Antworten.

    Das Trennzeichn ist Semikolon ; Das hat es beim abspeichern in TXT scheinbar geändert.

    Hab da nochmal angepasst und Hochgeladen.

    Gruß gmmg

    Dateien

    file0.csv.txt 674 Byte – 187 Downloads file1.csv.txt 3,99 kB – 178 Downloads
  • CSV Merge - zwei Dateien zusammenfügen

    • gmmg
    • 13. März 2023 um 15:40

    Moombas, danke für die schnelle Antwort.

    Hab den Ansatz verstanden, aber weiß nicht nicht so recht, wie ich das umsetzen soll. Da brauch im mal paar ruhige minuten :)

  • CSV Merge - zwei Dateien zusammenfügen

    • gmmg
    • 13. März 2023 um 15:14

    Hallo Zusammen,

    bei einer Änderung an einer Umfrage mit dem Tool LimeSurvey (Hier mal der alte Thread "https://autoit.de/thread/87749-limesurvey-remote-api-json/"), bin ich auf ein komisches Problem beim Zusammenfügen von zwei CSV Dateien gekommen.

    Das Problem tritt nur auf, wenn in einem Freitextfeld Zeilenumbrüche gesetzt wurden.

    Ich lese beide CSV in ein Array und dort sehe ich schon, dass im Array alles verschoben ist.

    Jede Datei hat gleich viele Zeilen, diese möchte ich zusammenfügen, das heißt, am Ende von Zeile 1 aus Datei 1 soll der Text von Zeile 1 aus Datei 2 usw.

    Ich denke der Aufruf von _FileReadToArray ist noch nicht korrekt, habe da aber mit den Parametern noch keine Lösung zu Stande gebracht.

    Hier mal ein Array Display, w man sehen, kann, dass es einen Zeilenumbruch gibt.

    pasted-from-clipboard.png

    Hat jemand eine Idee?

    AutoIt
        $csv_array_merge = ""
    
        ;----------------------------------------------------------------------
        $exportFile_merge = $mainfolder_path & $combo_txt & "\results_temp\results-" & $Survey_Name & ".csv"
    
        If FileExists($exportFile_merge) Then FileDelete($exportFile_merge)
        If Not FileExists($exportFile_merge) Then _FileCreate($exportFile_merge)
        ;----------------------------------------------------------------------
    
        $exportFile_0 = $mainfolder_path & $combo_txt & "\results_temp\results-" & $Survey_Name & "_0.csv"
        $exportFile_1 = $mainfolder_path & $combo_txt & "\results_temp\results-" & $Survey_Name & "_1.csv"
    
        _FileReadToArray($exportFile_0, $csv_array_0)  ; ohne Zusatzfelder
        _ArrayDisplay($csv_array_0)
    
        _FileReadToArray($exportFile_1, $csv_array_1)  ; mit Zusatzfeldern
        _ArrayDisplay($csv_array_1)
    
    
            For $e = 1 to UBound($csv_array_1) -2
    
                $csv_array_1_splitt = StringSplit($csv_array_1[$e],";")
    
                $sRange = "0-13"
                _ArrayDelete($csv_array_1_splitt, $sRange)
    
                ; $csv_array_merge &= $csv_array_0[$e] &";"& $csv_array_1_splitt[0] &";"&  $csv_array_1_splitt[1] &";"&  $csv_array_1_splitt[2] &";"&  $csv_array_1_splitt[3] &";"& $csv_array_1_splitt[4] & @CR  ; ist aktuell noch nicht an das neue Merge angepasst.
    
            Next
    
            FileWrite($exportFile_merge, $csv_array_merge)
    
            ;FileDelete($exportFile_0)    ;delete Results File1
            ;FileDelete($exportFile_1)    ;delete Results File2
    Alles anzeigen

    Danke

    Gruß Marcel

    Dateien

    file0.csv.txt 674 Byte – 201 Downloads file1.csv.txt 3,99 kB – 190 Downloads
  • FTP, SFTP + SSH Probleme mit login oder 0Byte-Dateien

    • gmmg
    • 6. März 2023 um 11:20

    Hallo autoit_dau,

    wir mach sowas per WinSCP. Da gibt es den Schalter console

    Hier mal ein Beispiel für eine CMD und ftp mit explicit TLS

    Code: Inhalt cmd
    START "" /WAIT CMD /C ""C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script="c:\scripte\testscript.txt""
    Code: Inhalt Scriptdatei "testscript.txt"
    #---------------------------------------------------------
    # Automatically answer all prompts negatively not to stall
    #---------------------------------------------------------
    
    # the script on errors
    option batch on
    
    # Disable overwrite confirmations that conflict with the previous
    option confirm off
    
    # Connect using a password
    # open ftp:user:pass@ipadress -explicittls
    open ftp:user:pass@server -explicittls
    
    # Change remote directory
    cd /Verzeichnis
    
    # Force binary mode transfer
    option transfer binary
    
    # Download file to the local directory d:\ löscht danach das file vom ftp
    get -delete meine-Datei*.txt d:\Download\
    
    # Disconnect
    close
    
    # Exit WinSCP
    exit
    Alles anzeigen

    Gruß gmmg

  • Neue, aktualisierte UDF für den Windows Task Scheduler!

    • gmmg
    • 1. Februar 2023 um 14:41

    Moombas,

    ich habe as meiste aus dem Beispiel der UDF übernommen.

    Da das Skript für einen einmaligen Import genutz wurde, habe ich mir da auch keine weiteren gedanken gemacht. :)

    Danke trotzdem für den Hinweis.

  • Neue, aktualisierte UDF für den Windows Task Scheduler!

    • gmmg
    • 1. Februar 2023 um 10:43

    Moombas,

    ich hatte das so --> _TS_TaskRegister($oService, $sFolder, $sName, $oTaskDefinition, $sUserId = "username", $sPassword = "passwort") aufgerufen wo es nicht ging.

    so funktionierte es dann --> _TS_TaskRegister($oService, $sFolder, $sName, $oTaskDefinition, username, password)

    Gruß gmmg

  • Neue, aktualisierte UDF für den Windows Task Scheduler!

    • gmmg
    • 1. Februar 2023 um 09:45

    Hallo Zusammen,

    ich habe noch ein Problem beim Import der Tasks.

    Sobalt im Task angeben wurde, das dieser als anderer User ausgeführt werden soll, funktioniert der Import bzw. der Task Register nicht.

    Hab zwar gesehen, dass man bei dem ERegister auch User und Passwort übergeben kann, aber ich hab es nicht hinbekommen.

    _TS_TaskRegister($oService, $sFolder, $sName, $oTaskDefinition, $sUserId = "", $sPassword = "", $iLogonType = Default, $iCreateFlag = $TASK_CREATE)


    Hab ihr noch eine Idee? --> Hab es selbst herausgefunden :) man muss nur den user und das passwort angeben, ohne die Variablen $sUserId & $sPassword davor.

    _TS_TaskRegister($oService, $sFolder, $sName, $oTaskDefinition, username, paswort)

    Gruß gmmg

  • Neue, aktualisierte UDF für den Windows Task Scheduler!

    • gmmg
    • 30. Januar 2023 um 13:16

    Hallo Water,

    es funktioniert mit dem setzen der 1 als inputtype.

    Danke

    Gruß gmmg

  • Neue, aktualisierte UDF für den Windows Task Scheduler!

    • gmmg
    • 30. Januar 2023 um 13:07

    Hallo Moombas,

    danke, mit dem Inputtype 1 funktioniert es.

    Da hat es sich doch gelohnt nochmal hier zu fragen :)

    Vielen Dank

    Gruß gmmg

  • Neue, aktualisierte UDF für den Windows Task Scheduler!

    • gmmg
    • 30. Januar 2023 um 10:49

    Hallo Zusammen,

    ich habe von einem Server mehrer TASK gesichert. Diese liegen als XML Files vor.

    Bekomme es im Test nicht hin, diese per Skript zu importieren.

    Hier kommt immer der Fehler :

    AutoIt
    ##RequireAdmin
    #include <array.au3>
    #include <TaskScheduler.au3>
    
    Local $oService
    Local $aArray
    
    $oService = _TS_Open()
    ;~ $aArray = _TS_TaskList($oService)
    ;~ If @error Then MsgBox(0, @error, @extended)
    ;~ _ArrayDisplay($aArray)
    
    ; *****************************************************************************
    ; Check if a folder exists and create folder if not
    ; *****************************************************************************
    Global $sFolder = "\Test"
    Global $iExists = _TS_FolderExists($oService, $sFolder)
    If Not @error Then
        MsgBox($MB_ICONINFORMATION, "_TS_FolderExists", "Checked folder: " & $sFolder & @CRLF & "Exists: " & $iExists)
        Global $aTaskProperties = _TS_FolderCreate($oService, $sFolder)
            If Not @error Then
                MsgBox($MB_ICONINFORMATION, "_TS_FolderCreate", "Folder: " & $sFolder & " successfully created!")
            Else
                MsgBox($MB_ICONERROR, "_TS_FolderCreate", "Returned @error=" & @error & ", @extended=" & @extended & @CRLF & @CRLF & _TS_ErrorText(@error))
            EndIf
    
    Else
        MsgBox($MB_ICONERROR, "_TS_FolderExists", "Returned @error=" & @error & ", @extended=" & @extended & @CRLF & @CRLF & _TS_ErrorText(@error))
    EndIf
    
    $sFolderName = $sFolder
    
    $XML = "D:\Test_Task.xml"
    $sTargetTaskName = "Test_Task"
    
    Global $oTaskDefinition = _TS_TaskImportXML($oService, 2, $XML)
    If @error Then Exit MsgBox($MB_ICONERROR, "_TS_TaskImportXML", "Returned @error=" & @error & ", @extended=" & @extended & @CRLF & @CRLF & _TS_ErrorText(@error))
    MsgBox($MB_ICONINFORMATION, "_TS_TaskImportXML", "Task Definition successfully created.")
    
    ; *****************************************************************************
    ; Register the new Task
    ; *****************************************************************************
    Global $oTask = _TS_TaskRegister($oService, $sFolderName, $sTargetTaskName, $oTaskDefinition)
    If @error Then Exit MsgBox($MB_ICONERROR, "_TS_TaskImportXML", "_TS_TaskRegister returned @error=" & @error & ", @extended=" & @extended & @CRLF & @CRLF & _TS_ErrorText(@error))
    MsgBox($MB_ICONINFORMATION, "_TS_TaskImportXML", "Task '" & $oTask.Path & "' successfully created.")
    
    _TS_Close($oService)
    Alles anzeigen

    Hast jemand eine Idee?

    Ein Import per Taskpklaner funktioniert mit der XML.

    Per CMD funktioniert der Import auch ohne Probleme.

    pasted-from-clipboard.png

    Gruß gmmg

  • Webdriver xPath iFrames usw.

    • gmmg
    • 23. Januar 2023 um 12:22

    Hallo Werner,

    Prinzipiell mache ich das auch immer so, wie oben angegeben.

    Hier mal ein Beispiel:

    AutoIt
    $sElement = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "/html/body/div[1]/aside[1]/div[2]/div/div[2]/div/div/form/button")
    ;_WD_HighlightElement($sSession, $sElement, 3)
    
    If @error = $_WD_ERROR_Success Then
    _WD_ElementAction($sSession, $sElement, 'click')
    Sleep(500)
    
    ;oder so
    $sElement_login_btn = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, '//*[@id="btnLogin"]')

    Gruß gmmg

  • GUI Checkbox

    • gmmg
    • 29. November 2022 um 13:50

    Hallo AUTOIT321,

    folgend ein Beispiel, zusammengewürfelt aus der Hilfe.

    AutoIt
    ;~ @error: 1 = Host is offline
    ;~ 2 = Host is unreachable
    ;~ 3 = Bad destination
    ;~ 4 = Other errors
    
    
    
    #include <GUIConstantsEx.au3>
    #include <MsgBoxConstants.au3>
    
    $ip = ""
    
            ; Create a GUI with various controls.
    Local $hGUI = GUICreate("Example", 300, 200)
    
    Local $input = GUICtrlCreateInput("", 10, 10, 100, 20)
    Local $ping = GUICtrlCreateButton("Ping", 120, 170, 85, 25)
    Local $idCheckbox = GUICtrlCreateCheckbox("Standard Checkbox", 10, 50, 185, 25)
    Local $idButton_Close = GUICtrlCreateButton("Close", 210, 170, 85, 25)
    
    ; Display the GUI.
    GUISetState(@SW_SHOW, $hGUI)
    
    ; Loop until the user exits.
    While 1
            Switch GUIGetMsg()
                    Case $GUI_EVENT_CLOSE, $idButton_Close
                            ExitLoop
    
                    Case $ping
    
                        $ip = GUICtrlRead($input)
    
                        MsgBox(0,"",$ip)
                        _ping($ip)
    
                    Case $idCheckbox
                            If _IsChecked($idCheckbox) Then
                                    MsgBox($MB_SYSTEMMODAL, "", "The checkbox is checked.", 0, $hGUI)
                            Else
                                    MsgBox($MB_SYSTEMMODAL, "", "The checkbox is not checked.", 0, $hGUI)
                            EndIf
    
            EndSwitch
    WEnd
    
    ; Delete the previous GUI and all controls.
    GUIDelete($hGUI)
    
    Func _IsChecked($idControlID)
            Return BitAND(GUICtrlRead($idControlID), $GUI_CHECKED) = $GUI_CHECKED
    EndFunc   ;==>_IsChecked
    
    
    Func _ping($ip)
    
        ; Ping the AutoIt website with a timeout of 250ms.
        Local $iPing = Ping($ip, 1000)
    
        If $iPing Then ; If a value greater than 0 was returned then display the following message.
                MsgBox(0, "", "The roundtrip-time took: " & $iPing & "ms.")
                GUICtrlSetState($idCheckbox, $GUI_CHECKED)
        Else
                MsgBox(0, "", "An error occurred with @error value of: " & @error)
        EndIf
    
    EndFunc
    Alles anzeigen

    Gruß gmmg

  • Ein Mailprogramm verlangt als Filter ein Regex-Pattern. Wie muss das für die Adressen X, Y, Z aussehen?

    • gmmg
    • 29. November 2022 um 12:23

    BugFix : Das habe ich im Verlauf auch gemerkt, das die Frageformulierung nicht eindeutig war.

    Die Anregungen bezüglich des Regex waren dennoch hilfreich.

    Ich denke wir können hier schließen und danke allen für die Unterstützung :)

    Habe den Titen auch entsprechend angepasst.

    Gruß gmmg

  • Ein Mailprogramm verlangt als Filter ein Regex-Pattern. Wie muss das für die Adressen X, Y, Z aussehen?

    • gmmg
    • 29. November 2022 um 09:07

    Hallo Zusammen,

    das Regex selbst wird für den OTRS Fork von Znuny bzw. Otobo benötigt.

    Dort benötige ich einen Email-Eingangsfilter, der mir prüft, wenn beide Adressen im To Feld stehen, soll die Email in einem bestimmten Order (Queue) landen.

    Habe jetzt eine Regex gefunden, die genau das macht, was ich benötige.

    ^.*(feldhase@musterhausen.de).*(kaninchen@musterhausen.de).*|^.*(kaninchen@musterhausen.de).*(feldhase@musterhausen.de).*

    Vielen Dank für eure Unterstützung und Lösungsansätze.

    gruß gmmg

  • Ein Mailprogramm verlangt als Filter ein Regex-Pattern. Wie muss das für die Adressen X, Y, Z aussehen?

    • gmmg
    • 28. November 2022 um 15:46

    Ja korrekt, wobei die beiden Adressen + Domain immer gleich sind.

    Ich glaube ich habe es:

    Regex: kaninchen@musterhausen.de ;feldhase@musterhausen.de |feldhase@musterhausen.de ;kaninchen@musterhausen.de

    Testtext: kaninchen@musterhausen.de ;feldhase@musterhausen.de

    oder

    Testext: feldhase@musterhausen.de ;kaninchen@musterhausen.de

    Beide male ein Match. Ich probiere das mal in der Anwendung.

    Danke

    Gruß gmmg

  • Ein Mailprogramm verlangt als Filter ein Regex-Pattern. Wie muss das für die Adressen X, Y, Z aussehen?

    • gmmg
    • 28. November 2022 um 15:39

    Moombas,

    da kommt auch nur 1 match. (match = mailtest1)

    Ich sehe aber gerade, die oben genannten Email Adressen sind aber für den Test ungeeignet, da die Namen vor dem @natürlich anders sind.

    Mit dem Beispiel To: kaninchen@musterhausen.de;feldhase@musterhausen.de kann man vielleicht besser testen :)

  • Ein Mailprogramm verlangt als Filter ein Regex-Pattern. Wie muss das für die Adressen X, Y, Z aussehen?

    • gmmg
    • 28. November 2022 um 15:24

    Hallo Zusammen,

    ich bin auf der Suche nach einem Regex Or Operator.

    Habe mich schon an einem Regex Onlien tester versucht, das klappt aber alle nicht ie gewünscht.

    ich möchte in einer Email das To Feld prüfen. Wenn da folgendes drin steht, soll ein ereignis ausgeführt werden.

    To: mailtest1@irgendetwas.de;mailtest2@irgendetwas.de

    Es kann aber auch vorkommen, das das To: Feld so aussieht:

    To: mailtest2@irgendetwas.de;mailtest1@irgendetwas.de

    Im Regex Tester habe ich folgendes versucht, bekomme aber immer nur 1 Treffer

    (mailtest1@irgendetwas.de)|(mailtest2@irgendetwas.de)

    (mailtest2@irgendetwas.de)|(mailtest1@irgendetwas.de)

    (mailtest1@irgendetwas.de;mailtest2@irgendetwas.de)|(mailtest1@irgendetwas.de;mailtest2@irgendetwas.de)

    Hat da jemand Erfahrung nzw eine Lösung parat?

    Gruß gmmg :)

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™