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

Beiträge von dieselwiesel

  • Ordner/Dateien verpacken mit Progressbar

    • dieselwiesel
    • 14. Mai 2017 um 18:52

    Ja, das Errorhandling und ich werden keine Freunde mehr :D Ich werd das von dir mal ausprobieren. Der -spf Befehl ist in dem 7z bei mir gar nicht gelistet und der packt dann auch "komisch" zusammen ?(

  • Ordner/Dateien verpacken mit Progressbar

    • dieselwiesel
    • 14. Mai 2017 um 00:41

    So schauts jetzt aus, funktioniert auch...

    Spoiler anzeigen
    AutoIt
    #include <Array.au3>
    #include <File.au3>
    #include <MsgBoxConstants.au3>
    #include <Constants.au3>
    
    
    
    
    Local $sFolder = _FileListToArrayRec("c:\myprog", "*1;*2;*3;*4;*5||6", 2, 0, 1, 2) ;Prüfen welche von der vorgegebenen Ordnern überhaupt da sind bzw. der Auszuschließen ist
    If @error Then
    	MsgBox(0, "", "Keine Ordner gefunden.")
    Else
    	;_ArrayDisplay($sFolder)
    	Local $aCount, $sInclude
    	For $i = 1 To UBound($sFolder) - 1
    		$sFiles = _FileListToArrayRec($sFolder[$i], "*", 1, 1, 1, 2) ; Anzahl der Dateien ermitteln
    		;_ArrayDisplay($sFiles)
    		If $sFiles[0] > Number("0") Then $aCount += $sFiles[0] ; Anzahl addieren
    		$sInclude &= "-i!" & $sFolder[$i] & " " ; String für SevenZipAdd $aFiles erstellen
    	Next
    
    
    		If $aCount > Number("0") Then
    			SevenZipAdd(StringTrimLeft($sInclude, 3), "C:\myprog.7z", $aCount)
    		Else
    			MsgBox(0,"", "Keine Dateien gefunden.")
    		EndIf
    
    
    EndIf
    
    
    
    
    Func SevenZipAdd($aFiles, $sArchive, $sCount)
        Local $iMax = $sCount
        Local $iPID = Run("7z.exe a -r " & $sArchive & " " & $aFiles, @SystemDir, @SW_SHOW, $STDERR_MERGED)
        Sleep(50)
        Local $sConsole, $sLine, $iUB
        ProgressOn("Progress Meter", "Adding to archive", "0 % (0 / " & $iMax & ")")
        Do
            $sConsole &= StdoutRead($iPID)
            If @error Then ExitLoop
            $aResult = StringRegExp($sConsole, "(Compressing\h+.*)", 3)
            $iUB = UBound($aResult)
            $iPerc = Int($iUB / $iMax * 100)
            ProgressSet($iPerc, $iPerc & " % (" & UBound($aResult) & " / " & $iMax & ")")
        Until Not Sleep(10)
        ProgressOff()
    EndFunc
    Alles anzeigen

    Verbesserungsvorschläge are welcome :thumbup:

  • Ordner/Dateien verpacken mit Progressbar

    • dieselwiesel
    • 13. Mai 2017 um 21:06

    Danke erstmal für Eure Antworten!!!

    Ich habe ein Bsp. von UEZ gefunden, dass eigentlich recht gut funktioniert u. auch den Zweck erfüllt

    Spoiler anzeigen
    AutoIt
    ;coded by UEZ 2013
    
    
    #include <Constants.au3>
    Global Const $sPath7Zip = '"c:\Program Files\7-Zip\7z.exe"'
    Global $sFiles = '"c:\Temp"'
    Global $sArchive = '"c:\Test.7z"'
    
    
    SevenZipAdd($sFiles, $sArchive)
    
    
    Func SevenZipAdd($sFiles, $sArchive)
        Local $iMax = GetAmountFF($sFiles)
        Local $iPID = Run($sPath7Zip & " a " & $sArchive & " -r " & $sFiles, @ScriptDir, @SW_HIDE, $STDERR_MERGED)
        Sleep(50)
        Local $sConsole, $sLine, $iUB
        ProgressOn("Progress Meter", "Adding to archive", "0 % (0 / " & $iMax & ")")
        Do
            $sConsole &= StdoutRead($iPID)
            If @error Then ExitLoop
            $aResult = StringRegExp($sConsole, "(Compressing\h+.*)", 3)
            $iUB = UBound($aResult)
            $iPerc = Int($iUB / $iMax * 100)
            ProgressSet($iPerc, $iPerc & " % (" & UBound($aResult) & " / " & $iMax & ")")
        Until Not Sleep(10)
        ProgressOff()
    EndFunc
    
    
    
    
    Func GetAmountFF($sPath)
        Local $iPID = Run(@ComSpec & " /c dir /b /s " & $sPath, @ScriptDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
        Sleep(50)
        Local $sConsole
        Do
            $sConsole &= StdoutRead($iPID)
            If @error Then ExitLoop
        Until Not Sleep(10)
        StringReplace($sConsole, @CRLF, @CRLF)
        Return @extended + 1
    EndFunc
    Alles anzeigen

    Allerdings hab ich noch ein Problem damit die Anzahl der Dateien für $iMax zu ermitteln, da ich nur 5 von 6 Ordnern sichern möchte. Dachte an _FileListToArrayRec() weil ich den einen Ordner übers Exclude auslassen kann, aber das liefert mir rund 250 Dateien weniger als es wirklich sind.

    Spoiler anzeigen
    AutoIt
    #include <Array.au3>
    #include <File.au3>
    #include <MsgBoxConstants.au3>
    #include <Constants.au3>
    
    
    	$ignorePath= "6" ;der Ordner den ich nicht brauche
    Global $anzahl = _FileListToArrayRec("c:\myprog\", "*||" & $ignorePath, 0, 1, 1, 2)
    	;_ArrayDisplay($anzahl)
    
    
    ;Global Const $sPath7Zip = '"c:\Program Files\7-Zip\7z.exe"' ;nicht sinvoll, besser 7z.exe (u. 7z.dll) per FileInstall in die @Systemdir bringen
    Global $sFiles = 'c:\myprog\1 -i!c:\myprog\2 -i!c:\myprog\3 -i!c:\myprog\4 -i!c:\myprog\5'
    Global $sArchive = '"c:\myprog.7z"'
    
    
    SevenZipAdd($sFiles, $sArchive)
    
    
    Func SevenZipAdd($sFiles, $sArchive)
        Local $iMax = $anzahl
        Local $iPID = Run("7z.exe a -r " & $sArchive & " " & $sFiles, @SystemDir, @SW_SHOW, $STDERR_MERGED)
        Sleep(50)
        Local $sConsole, $sLine, $iUB
        ProgressOn("Progress Meter", "Adding to archive", "0 % (0 / " & $iMax & ")")
        Do
            $sConsole &= StdoutRead($iPID)
            If @error Then ExitLoop
            $aResult = StringRegExp($sConsole, "(Compressing\h+.*)", 3)
            $iUB = UBound($aResult)
            $iPerc = Int($iUB / $iMax * 100)
            ProgressSet($iPerc, $iPerc & " % (" & UBound($aResult) & " / " & $iMax & ")")
        Until Not Sleep(10)
        ProgressOff()
    EndFunc
    Alles anzeigen

    Irgendwelche Vorschläge?

  • Ordner/Dateien verpacken mit Progressbar

    • dieselwiesel
    • 12. Mai 2017 um 18:11

    Hi @all

    Beschäftige mich seit langem mal wieder mit AutoIt und möchte eine Backup Funktion in ein Programm einbauen. Die soll "lediglich" ein paar Ordner/Dateien mit Progressbar in ein Archiv packen, welches sich möglichst mit Windows Bordmitteln entpacken lässt. Hab schon ein paar Bsp. gefunden, die entweder nicht funktioniert haben, oder sich nicht wie gewünscht integrieren lassen. Hat jmd. ne Idee nach was man so suchen kann? Danke im Voraus!

  • Variable aus Array?

    • dieselwiesel
    • 20. Februar 2016 um 20:42

    *push* :whistling:

  • Variable aus Array?

    • dieselwiesel
    • 15. Februar 2016 um 23:59

    Hab den Code im 1. Post geändert ;)

  • Variable aus Array?

    • dieselwiesel
    • 15. Februar 2016 um 22:35

    Habe jetzt was zusammen bekommen, was auch zu funktionieren scheint :D

    Kann man das evtl. noch etwas eleganter "zusammenkürzen"?

  • Variable aus Array?

    • dieselwiesel
    • 13. Februar 2016 um 19:46

    Hi @ all
    versuche krampfhaft aus einem Array Variablen zu erstellen, komme aber nicht zu Rande.


    Spoiler anzeigen
    AutoIt
    #include <Array.au3>
    #include <File.au3>
    
    
    Global $folder[4]
    $folder[0] = "A"
    $folder[1] = "B"
    $folder[2] = "C"
    $folder[3] = "D"
    
    
    Local $main = @HomeDrive & "\MyProg1\Main\"
    
    
    DirCreate($main)
    
    
    For $i = 0 To UBound($folder) - 1
    	DirCreate($main  & $folder[$i])
    		For $j = 1 To 2
    			DirCreate($main & $folder[$i] & "\Daten" & $j)
    		Next
    
    
    Next
    
    
    _FileCreate($main & "A\Daten1\abc4730.txt")
    _FileCreate($main & "A\Daten2\abc4750.txt")
    _FileCreate($main & "B\Daten1\abc3210.txt")
    _FileCreate($main & "B\Daten2\abc3190.txt")
    _FileCreate($main & "C\Daten1\abc2680.txt")
    _FileCreate($main & "C\Daten2\abc2650.txt")
    _FileCreate($main & "D\Daten1\abc1330.txt")
    _FileCreate($main & "D\Daten2\abc1350.txt")
    
    
    
    
    MsgBox(0, "", _getInfo($main, '0'))
    
    
    
    
    DirRemove(@HomeDrive & "\MyProg1", 1)
    
    
    
    
    Func _getInfo($info, $info2)
    
    
    Local $aList = ""
    Local $bList = ""
    Local $cList = ""
    Local $dList = ""
    Local $aSplit
    
    
    
    
    	For $i = 0 To UBound($folder) - 1
    		$Array = _FileListToArrayRec($info & $folder[$i], "abc*.txt", 1, 1, 1, 1)
    		;_ArrayDisplay($Array)
    			If IsArray($Array) Then ;ExitLoop
    				_ArrayColInsert($Array, 1)
    				;_ArrayDisplay($Array)
    				For $j = 1 To $Array[0][0]
    					$Array[$j][1] = StringMid($Array[$j][0], StringInStr($Array[$j][0], '\', 2, -1) + 1)
    				Next
    				;_ArrayDisplay($Array)
    				_ArraySort($Array, 1, 1, 0, 1)
    				;_ArrayDisplay($Array)
    				_ArrayColDelete($Array, 1)
    				;_ArrayDisplay($Array)
    
    
    				$bList = StringSplit($Array[1][0],"\")
    				;_ArrayDisplay($bList)
    
    
    				;$aList &= $bList[UBound($bList)-2]& "-" & StringReplace(StringReplace($Array[1][1], $info2 & ".txt", ""), "abc", "") & "|"
    				$aList &= $bList[UBound($bList)-2]& "-" & StringReplace(StringReplace($bList[UBound($bList)-1], $info2 & ".txt", ""), "abc", "") & "|"
    
    
    			Else
    				$aList &= 0 & "-" & 0 & "|"
    				;$bList &= 0 & "-"
    
    
    			EndIf
    	Next
    
    
    
    
    $aArray = StringSplit(StringTrimRight($aList, 1), "|")
    ;_ArrayDisplay($aArray)
    
    
    Global $aCount[$aArray[0]]
    
    
    	For $k = 1 To UBound($aArray) - 1
    
    
    			$bArray = StringSplit($aArray[$k], "-")
    			;_ArrayDisplay($bArray)
    			$cList &= $bArray[2] & "-"
    			$aCount[$k-1] = _change($bArray[1])
    
    	Next
    
    
    _ArrayDisplay($aCount)
    
    
    Return StringTrimRight($cList, 1)
    
    
    
    
    EndFunc
    
    
    Func _change($cmd)
    
    
    	If ($cmd = "Daten1") Then
    		Return "Daten2"
    	ElseIf ($cmd = "Daten2") Then
    		Return "Daten1"
    	Else
    		Return 0
    	EndIf
    
    
    EndFunc
    Alles anzeigen

    Das was der Returnwert liefert passt schon, aber wie krieg ich den Row[1] Wert aus dem $bList Array zu einer seperaten "gegensätzlichen" Variable? Sprich wenn Daten1 im Array angezeigt wird als Variable Daten2 rauskommt und umgekehrt.

    Sieht auch alles recht wild aus, vllt. lässt es sich auch noch kürzen? Danke schonmal im Voraus!

  • Zahlen in String auslesen

    • dieselwiesel
    • 9. Februar 2016 um 21:20

    Danke an euch beide für Eure Antworten!

    Ich Dutz habe die For Next Schleife vergessen :S darum ging es nicht :D

    Die ZAHL ändert sich auch wöchentlich, so das öfters auch dort mal eine 0 enthalten sein kann - darum denke ich die Nullen zu Replacen ist keine Gute Idee. Nur das abc und (je nach Version) das 0.txt oder D.txt bleibt gleich.

    EDIT:
    Das StringReplace ist gar nicht so schlecht...

    StringReplace(StringReplace($level, $type & ".txt", ""), "abc", "")

    Muss dann nur vorher die Version abfragen und als $type deklarieren.

  • Zahlen in String auslesen

    • dieselwiesel
    • 8. Februar 2016 um 21:38

    Hi @ all
    muss das hier nochmal ausgraben weil ich es mit dem $pattern nicht wirklich gebacken kriegen.

    Habe 2 Strings aus denen nur die ZAHLen benötigt werden.


    abcZAHL0.txt -> Die Null vorm Punkt wird nicht benötigt.

    abcZAHLD.txt

    Gibt es da evtl. eine Möglichkeit?

  • "Lokaler" Hotkey für bestimmte Funktion?

    • dieselwiesel
    • 6. Februar 2016 um 10:07

    @Kanashius & chesstiger
    Danke erstmal für eure Antworten!


    Habe bis vorgestern an mir selbst gezweifelt, dann hab ich rausgefunden das mas ein Script u. die comp. EXE "sowieso" mit ESC beenden kann. Das hatte ich vorher noch nie ausprobiert :D (Kann man das evtl. auch ausschalten?)

    Es sollte das Script während/nach einer "fehlgeschlagener" Treiberinstallation (mit Fehlercode) beenden - funktioniert aber nich so einfach wie gedacht. Habe rausgefunden, das ein fehlendes KB Update dafür verantwortlich war. Habe dann eine Checkfunktion eingefügt, die schaut ob das Update installiert ist und eine weitere die den Status abfragt u. ggf. an dieser Stelle abbricht.

  • "Lokaler" Hotkey für bestimmte Funktion?

    • dieselwiesel
    • 3. Februar 2016 um 20:58

    Hi @ all
    ist es möglich einen Hotkey nur zuzulassen, wenn das Script in einer best. Funktion hängen bleibt?

    Dachte an...

    Code
    _test()
    
    
    Func _test()
    	HotKeySet("{ESC}", "_abort")
    	;mach was
    	;bleibt hängen
    	;Abbruch mit ESC
    EndFunc
    
    
    Func _abort()
    	Exit
    EndFunc
    Alles anzeigen

    ...funktioniert aber nich so wie gedacht :(

  • Mehrere Parameter für $CMDLINE?

    • dieselwiesel
    • 10. Januar 2016 um 22:45

    Hi @all

    wie kann man seine EXE mit 2 Parametern (exe -i -s) gleichzeitig starten? Mit einem gehts ja recht gut, aber mit nem 2. krieg ichs nicht hin :(

    Spoiler anzeigen
    AutoIt
    If $cmdLine[0] > 0 Then
    	If $cmdLine[1] = "-i"  Then
    		Msgbox(0,"","Install")
    	ElseIf $cmdLine[1] = "-u"  Then
    		Msgbox(0,"","Uninstall")
    	Else
                Msgbox(0,"","Schalter ungültig")
    	EndIf
    Else
    	Msgbox(16,"","Kein Parameter vorhanden.")
    	Exit
    EndIf
    Alles anzeigen

    Danke :thumbup:

  • Treiber (in-/uninstall) mittels devcon - "Errorhandling"?

    • dieselwiesel
    • 28. November 2015 um 00:42

    Hi @all


    möchte einen Treiber via DevCon installieren und ggf. deinstallieren, wenn das Gerät nicht richtig erkannt und als Unbekanntes Gerät gelistet wird.

    [autoit]

    RunWait(@ComSpec & ' /c ' & 'devcon.exe install ' & @TempDir & '\my.inf root\mydevice', @SystemDir, @SW_hide)

    [/autoit]


    Mit dem Befehl soll gestartet werden. Wo bekomme ich nun die Information her, ob die Aktion erfolfreich war oder nicht?


    Wenn es nicht erfolgreich war möchte ich rausbekommen, mit welcher INF Datei ich dann das Treiberpaket entfernen kann.

    [autoit]

    RunWait(@ComSpec & ' /c ' & 'devcon.exe drivernodes root\mydevice', @SystemDir, @SW_hide)

    [/autoit]


    Mit diesem Befehl bekommt man das übers CMD raus. Gibt es evtl. noch andere Möglichkeiten? Über die Registry (HKLM\SYSTEM\CurrentControlSet\Services\mydevice)? Habe echt keine Idee was da "sicherer" ist ?(

    Löschen würd ich es dann so

    [autoit]

    RunWait(@ComSpec & ' /c ' & 'devcon.exe remove ' & $var & ' root\mydevice', @SystemDir, @SW_hide)

    [/autoit]

    Aber am Wichtigsten ist erstmal das "Errorhandling" vom ersten Befehl.

    Danke schonmal im Voraus.

  • CMD Befehle im Script verarbeiten?

    • dieselwiesel
    • 24. November 2015 um 19:58

    Bei mir z.B. ist alles deaktiviert und da funktioniert das soweit ganz gut. Sollen noch ein paar andere Leute bekommen, deren System ich nicht kenne. Wenn nicht muss ich Ihnen dazu sagen, dass sie UAC deaktivieren und es ggf. "Als Administrator ausführen" sollen.

  • CMD Befehle im Script verarbeiten?

    • dieselwiesel
    • 24. November 2015 um 11:45
    Zitat von Peter S. Taler

    So schwer sind die Befehle nicht auseinander zu halten- Schau mal in der Hilfe nach.


    Ist richtig, wollte nur wissen welcher der Optimale ist. Weis nicht ob SC ausgeführt wird, wenn z.B. UAC aktiviert ist? Habe das Script oben geändert und möchte gern wissen, ob das "Fachlich" korrekt ist oder ob ich eine Variable ausser acht gelassen habe bzw. was verbessert werden kann?

    Wo ich auch noch keine Lösung gefunden habe ist, dass der Service im Geräte Manager unter Nicht-PnP-Treiber (auch nach einem Neustart) nicht gelistet wird. Im Regedit haben alle im Gerätemanager gelisteten Nicht-PnP-Treiber den Eintrag Capabilities;REG_DWORD;0 aufgeführt. Ist dieser Eintrag dafür verantwortlich? Wenn ja, wie kann ich Ihn setzen? Über Regwrite, die Reg.exe, eine .reg Datei oder im Regedit selber bekomme ich keine Zugriff darauf 8|

  • CMD Befehle im Script verarbeiten?

    • dieselwiesel
    • 23. November 2015 um 21:19

    Hi @all

    Ich möchte einen Dienst mit SC über ein Script erstellen. Leider blicke nicht so recht mit den möglichen Befehlen durch ?( Da gibts ja den Run/Runwait, _RunDos, RunAs/RunAsWait, dann kommt noch das @ComSpec dazu und ich hab keine Ahnung was ich nehmen soll...

    Ist der RunAs/RunAsWait nötig, wenn #RequireAdmin im Script vorhanden ist?

    So schaut das Script bis jetzt aus...

    Spoiler anzeigen
    AutoIt
    #RequireAdmin
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #NoTrayIcon
    
    
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Meine GUI", 200, 114, 349, 249)
    $Button1 = GUICtrlCreateButton("Starten", 6, 11, 187, 25)
    $Button2 = GUICtrlCreateButton("Beenden", 5, 44, 187, 25)
    $Button3 = GUICtrlCreateButton("Exit", 5, 76, 187, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    
    
    While 1
        $msg = GUIGetMsg()
        Switch $msg
            Case $GUI_EVENT_CLOSE
                Exit
            Case $Button1
    	    _ServiceStartStop(1)
            Case $Button2
                _ServiceStartStop()
    		Case $Button3
    			Exit
        EndSwitch
    WEnd
    
    
    Func _ServiceStartStop($sFlag = 0)
        If $sFlag = 1 Then
    		If _IsServiceRunning('Abhängigkeit') = True Then
    			If _IsServiceRunning('MyService') = False Then
    
    				RunWait(@ComSpec & ' /c sc.exe create MyService type= "own" start= "system" binpath= "' & @SystemDir & '\drivers\my.SYS" DisplayName= "MyService"', @SystemDir, @SW_HIDE)
    					If Not @error Then
    						RunWait(@ComSpec & ' /c sc.exe config "MyService" depend= "Abhängigkeit"', @SystemDir, @SW_HIDE)
    						RunWait(@ComSpec & ' /c sc.exe start MyService', @SystemDir, @SW_HIDE)
    						MsgBox(64, "Information", "Ist gestartet.", 0, $Form1)
    					Else
    						MsgBox(64, "Information", "Kann nicht gestartet werden.", 0, $Form1)
    					EndIf
    			Else
    				MsgBox(64, "Information", "Läuft bereits...", 0, $Form1)
    			EndIf
    		Else
    			MsgBox(64, "Information", "Abhängigkeit fehlt...", 0, $Form1)
    		EndIf
        Else
            If _IsServiceRunning('MyService') = True Then
    			RunWait(@ComSpec & " /c sc.exe stop MyService", @SystemDir, @SW_HIDE)
    				If Not @error Then
    					RunWait(@ComSpec & " /c sc.exe delete MyService", @SystemDir, @SW_HIDE)
    					MsgBox(64, "Information", "Erfolgreich beendet...", 0, $Form1)
    				Else
    					MsgBox(64, "Information", "Kritischer Fehler!" & @CRLF & "Kann nicht beendet werden.", 0, $Form1)
    				EndIf
    		Else
    			MsgBox(64, "Information", "Ist schon beendet...", 0, $Form1)
    		EndIf
    	EndIf
    
    
    
    
    Func _IsServiceRunning($sService)
        Local $oShell = ObjCreate('shell.application')
        If @error Then
            Return SetError(1, 0, False)
        EndIf
        Return $oShell.IsServiceRunning($sService)
    EndFunc   ;==>_IsServiceRunning
    Alles anzeigen

    Danke schonmal...

  • Datenstand einer Software abfragen?

    • dieselwiesel
    • 1. November 2015 um 13:08

    Ich hoffe das ich so alle möglichen Fehler berücksichtigt habe...?

    Spoiler anzeigen
    AutoIt
    #include <File.au3>
    #include <Array.au3>
    
    
    $pattern = "(\d+)"
    
    
    $aList = _FileListToArray("daten")
    
    
    Global $aNew[$aList[0]]
    
    
    For $i = 1 To $aList[0]
    
    
       $aDaten1 = _FileListToArray("daten" & "\" & $aList[$i] & "\daten1", "stand*.txt")
       If IsArray($aDaten1) Then
    	  Local $aRegEx1 = StringRegExp($aDaten1[1], $pattern, 3)
        Else
    	  Local $aRegEx1 = StringRegExp("0", $pattern, 3)
       EndIf
    
    
       $aDaten2 = _FileListToArray("daten" & "\" & $aList[$i] & "\daten2", "stand*.txt")
       If IsArray($aDaten2) Then
    	  Local $aRegEx2 = StringRegExp($aDaten2[1], $pattern, 3)
        Else
    	  Local $aRegEx2 = StringRegExp("0", $pattern, 3)
       EndIf
    
    
    $sTest = Number($aRegEx1[0]) > Number($aRegEx2[0])
    
    
       If $sTest = 1 Then
    	  $aNew[$i - 1] = $aRegEx1[0]
    	  ;ConsoleWrite($sNew & @CRLF)
       Else
    	  $aNew[$i - 1] = $aRegEx2[0]
    	  ;ConsoleWrite($sNew & @CRLF)
    
    
       EndIf
    
    
    Next
    
    
    MsgBox(0, "", $aNew[0] & "/" & $aNew[1] & "/" & $aNew[2] & "/" & $aNew[3])
    Alles anzeigen


    Vllt. gehts ja noch ein bißchen kompakter ?(

  • Datenstand einer Software abfragen?

    • dieselwiesel
    • 31. Oktober 2015 um 12:29
    Zitat von alpines

    Natürlich solltest du das ganze Errorhandling nicht vergessen!

    Oh ja, danke für den wichtigen Hinweis!!! Damit sollte ich schon ganz oben anfangen. Hab nämlich mal einen der Daten1/2 Ordner gelöscht und schon bricht die ganze Sache ab, weil ja die Grundlage nicht mehr da ist.

    Sollte ich da mit einem FileExists() prüfen ob der Pfad vorhanden ist oder mir mit If @error irgendwas ausdenken?


    EDIT: habe ein BSP. in der Hilfe gefunden, mit dem werde ich mich heute abend mal beschäftigen...

  • Datenstand einer Software abfragen?

    • dieselwiesel
    • 30. Oktober 2015 um 14:30

    Hab mir das gestern nochmal angeschaut und auch mal ein paar Bsp. probiert, damit ich das mit dem Array mal nachvollziehen kann.

    So schauts jetzt aus...

    Spoiler anzeigen
    AutoIt
    #include <File.au3>
    #include <Array.au3>
    
    
    $pattern = "(\d+)"
    
    
    $aList = _FileListToArray("daten")
    
    
    Global $sNew[4]
    
    
    For $i = 1 To $aList[0]
       $aDaten1 = _FileListToArray("daten" & "\" & $aList[$i] & "\daten1", "stand*.txt")
       $aDaten2 = _FileListToArray("daten" & "\" & $aList[$i] & "\daten2", "stand*.txt")
    
    
    	$aRegEx1 = StringRegExp($aDaten1[1], $pattern, 3)
    	$aRegEx2 = StringRegExp($aDaten2[1], $pattern, 3)
    
    
       If $aRegEx1[0] > $aRegEx2[0] Then
    	  Global $sNew = $aRegEx1[0]
       Else
    	  Global $sNew = $aRegEx2[0]
       EndIf
    
    
    MsgBox(0, "", $sNew)
    
    
    Next
    Alles anzeigen


    Kannst du mir noch sagen welche bewandnis das Number() in deinem Bespiel hatte?

    Habe auch probiert das Ergebnis ($sNew) pro Durchlauf in eine Variable zu bringen aber irgendwie klappt das nicht :(
    Dachte $sNew[$i] = vor dem $aRegEx1+2 würde reichen, tut es aber nicht. Muss da auch noch eine For Next Schleife rein?

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™