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

Beiträge von mitac100

  • MyBackupRestore - CPU-Last zu hoch

    • mitac100
    • 28. März 2019 um 18:29

    Bitnugger

    Danke für deine Unterstützung. Funktioniert wunderbar.

    Die  Best coding practices  werde ich mir bei Gelegenheit anschauen.

    Viele Grüße

    Mitac

  • MyBackupRestore - CPU-Last zu hoch

    • mitac100
    • 25. März 2019 um 19:40

    Danke Bitnugger.

    Jetzt verstehe ich warum die ListView bockt. Ich werde mich die Tage deine Ansatz umsetzen.

    VG, Mitac

  • MyBackupRestore - CPU-Last zu hoch

    • mitac100
    • 24. März 2019 um 12:37
    Zitat von Bitnugger

    Danke Bitnugger, die CPU-Last ist jetzt auf 0.

    Code
    While 1
        Sleep(10) ; 10-250 sind akzeptable Werte
    WEnd

    Funktion _Laufwerke_ListViewBox

    If @UserName = @UserName Or @UserName = @UserName Then

    Hust... das macht natürlich Sinn... ;)


    Ja, macht es, wenn ich die notwendige Funktion eingebettet hätte.

    Es gibt eine Vorgabe, nach der die Sicherung auf einem USB-Stick erfolgen muss.

    Nur eine kleine Anzahl Personen soll auch die Lokalen Laufwerke sehen können.


    Zitat

    Funktion _Backup_Laufwerke_WM_Notify_Events

    Hier hast du bei #forceref $hWndGUI als Parameter angegeben... wobei $hWndGUI aber nirgends deklariert wird. Richtig wäre hier wohl $hWnd.

    Wenn man mit mehreren GUI's hantierst, kann die Frage nach der ControlID u.U. ins Auge gehen, deshalb sollte dafür anstelle der ControlID besser das Handle des Controls verwendet werden.

    ; ...

    Global $hBackup_Laufwerke_ListView = ControlGetHandle($hGUI, '', $Backup_Laufwerke_ListView)

    Global $hRestore_Laufwerke_ListView = ControlGetHandle($hGUI, '', $Restore_Laufwerke_ListView)

    ; ...

    Func _Backup_Laufwerke_WM_Notify_Events($hWnd, $MsgID, $wParam, $lParam)

    #forceref $hWnd, $MsgID, $wParam

    Local $tNMHDR = DllStructCreate($tagNMHDR, $lParam)

    Local $hWndFrom = DllStructGetData($tNMHDR, "hWndFrom")

    Local $nNotifyCode = DllStructGetData($tNMHDR, "Code")

    Local $iIDFrom = DllStructGetData($tNMHDR, 'IDFrom')

    Switch $hWndFrom

    Case $hBackup_Laufwerke_ListView

    If $nNotifyCode = $NM_CLICK Then

    ; ...

    EndIf

    Case $hRestore_Laufwerke_ListView

    If $nNotifyCode = $NM_CLICK Then

    ; ...

    EndIf

    EndSwitch

    ; ...

    Return $GUI_RUNDEFMSG

    EndFunc ;==>_Backup_Laufwerke_WM_Notify_Events

    Alles anzeigen

    Mit dem obigen Code wird das Ziellaufwerk gar nicht mehr angezeigt. Ansonsten bleibt alles beim gleichen.

    Wenn ich die beiden Zeilen...

    Global $hBackup_Laufwerke_ListView = ControlGetHandle($hGUI, '', $Backup_Laufwerke_ListView)

    Global $hRestore_Laufwerke_ListView = ControlGetHandle($hGUI, '', $Restore_Laufwerke_ListView)

    ...vor der Funktion Platziere, erhalte ich die Meldung: Variable used without being declared

    Case $hBackup_Laufwerke_ListView

    Case ^ ERROR

    Wenn ich am Anfang des Scripts Global $hBackup_Laufwerke_ListView und Global $hRestore_Laufwerke_ListView einfüge udn vor der Funktion...

    $hBackup_Laufwerke_ListView = ControlGetHandle($hGUI, '', $Backup_Laufwerke_ListView)

    $hRestore_Laufwerke_ListView = ControlGetHandle($hGUI, '', $Restore_Laufwerke_ListView)

    ...wird zwar das Programm gestartet, bei der Wahl eine Ziellaufwerks, wird dieses nicht mehr angezeigt.

  • MyBackupRestore - CPU-Last zu hoch

    • mitac100
    • 24. März 2019 um 12:09
    Zitat von alpines

    Du solltest dir angewöhnen binäre Ressourcen nicht im Hauptskript abzuspeichern, das verlangsamt den Editor einfach nur unnötig.

    Lager sie in eine eigene .au3 aus und binde sie mit include ein. Deine zip ist auch nicht lauffähig, die OutlookExConstants fehlt.

    Es wäre schön wenn du uns verrätst wo dein Skript in eine Schleife gerät, bzw. welche Funktionen ausgeführt werden wenn du Sachen anklickst die andere unwählbar machen,

    damit wir uns nicht durch die tausende Zeilen kämpfen müssen.

    Die Binarys habe ich ausgelagert, danke für den Tipp.

    Die OutlookExConstants wird nicht benötigt, ich habe sie dennoch in die neue zip im ersten Post eingefügt.

    Wenn ich eines der Laufwerke klicke wird darunter das Ziellaufwerk usw. angezeigt, siehe Bild.

    Sobald ich z.B. auf Einstellungen klicke und danach eine neues Laufwerk markiere, wird nicht das neue, sondern immer noch das zuvor gewählte Laufwerk angezeigt.

    In Zeile 1764 werden die _Backup_Einstellungen() aufgerufen. Der _Text_Editor ab 1961 und _Text_Editor_WM_NOTIFY ab 2042.

    Das ListView wird über die _Backup_Laufwerke_WM_Notify_Events Zeile 1517 gesteuert.

    Dateien

    MBR_Backup.png 172,39 kB – 0 Downloads
  • MyBackupRestore - CPU-Last zu hoch

    • mitac100
    • 23. März 2019 um 21:48

    Hallo,

    wegen der Übersichtlichkeit, habe ich meinem Backup Programm unten anderem eine neue Optik verpasst.

    Bis auf zwei Kleinigkeiten, klappt soweit alles.

    1. Die CPU-Last ist viel zu hoch
    2. Wenn ich einen der Buttons, Einstellungen, Datenaufnahme oder Protokoll klicke, kann ich danach kein Laufwerk mehr wählen.

    Was muss ich tun um das ListView zu reaktivieren?

    Das Programm generiert vorab eine Ini und sammelt die Notwendigen Daten für das Backup.

    Ablage: C:\Users\DeineID\MyBackupRestore\

    Leider reichen die 40.000 Zeichen für den Code nicht aus. Deshalb die Zip.

    MeineQuellen_1.0.0 muss vorab generiert werden.

    Das Programm generiert eine Ini und sammelt die Notwendigen Daten für das Backup.

    Ablage: C:\Users\DeineID\MyBackupRestore\

    Dateien

    myBackupRestore_1.0.8.zip

  • _StringBetween, Zeilen durchnummerieren

    • mitac100
    • 14. Oktober 2018 um 21:33

    Hallo autoiter.

    Danke, das ist genau das was ich gesucht habe.:)

    Was hat das mit Arbeitsverweigerung zu tun?

  • _StringBetween, Zeilen durchnummerieren

    • mitac100
    • 14. Oktober 2018 um 16:50

    @Bitnugger, habe das Skript zum besseren Verständnis gekürzt bzw. leicht angepasst. Bitrag von Alpines. Array - _ArrayInsert - Bitnugger

    Es geht einzig darum vor dem Pfad einen Key für die weitere Bearbeitung in der Ini zu setzen.

    autoBert, das funktioniert leider nicht. Es geht um die Keys.

    Spoiler anzeigen

    #include <Array.au3>

    #include<File.au3>

    #include <String.au3>

    $sFileName = "KeePass.config.txt"

    ;~ $sFileName = "KeePass.config.txt"

    $hFilehandle = _Filecreate(@ScriptDir & "\" & $sFileName)

    $sFilePath = @ScriptDir & "\" & $sFileName

    $hFileOpen = FileOpen($sFilePath, $FO_APPEND)

    If $hFileOpen = -1 Then

    Return False

    EndIf

    FileWrite($hFilehandle, "" & @CRLF)

    FileWrite($hFilehandle, "<Path>D:\Documents\KeePass\Test.kdbx</Path>" & @CRLF)

    FileWrite($hFilehandle, "<Path>D:\Documents\KeePass\Test.kdbx</Path>" & @CRLF)

    FileWrite($hFilehandle, "<Path>F:\Documents\KeePass\Test.kdbx</Path>" & @CRLF)

    FileClose($hFilehandle)

    $hFileOpen = FileOpen($sFilePath)

    $sFileRead = FileRead($hFileOpen)

    FileClose($hFileOpen)

    Local $BetweenArray = _StringBetween($sFileRead, "<Path>", "</Path>", $STR_ENDISSTART)

    Local $aFile = $BetweenArray

    Local $i = 0

    While $i < UBound($aFile)

    If StringLeft ( ($aFile[$i]) , 1 ) = '' Then

    ;~ _ArrayInsert ( $aFile, "1=" & $i + 1, "Test " & StringRight ( $aFile[$i] , StringLen ( $aFile[$i] ) - 1 ) )

    $i += 1

    EndIf

    $i += 1

    WEnd

    _ArrayDisplay ( $aFile , "kdbx" )

    $aArrayUnique = _ArrayUnique($aFile) ;

    $Kdbx= _ArrayToString($aArrayUnique, @CRLF)

    MsgBox($MB_SYSTEMMODAL, "$aArrayUnique ", "Ist: " & @CRLF & $Kdbx & @CRLF & @CRLF & "Ergebnis soll sein: " & @CRLF & _

    "1=D:\Documents\KeePass\Test.kdbx" & @CRLF & "2=F:\Documents\KeePass\Test.kdbx" & @CRLF & @CRLF & _

    "Wie muss ich in den Code schreiben damit die Keys erzeugt werden?")

  • _StringBetween, Zeilen durchnummerieren

    • mitac100
    • 13. Oktober 2018 um 20:11

    Kizum, funktioniert nicht, auch weil ubound , die werte aus _ArrayUnique multipliziert.

    Sieht dann so aus:

    1=D:\Documents\KeePass\Test.kdbx

    1=D:\Documents\KeePass\Test.kdbx

    3=D:\Documents\KeePass\Test.kdbx

    1=F:\Documents\KeePass\Test.kdbx

    1=F:\Documents\KeePass\Test.kdbx

    3=F:\Documents\KeePass\Test.kdbx

    Es ist egal ob ConsoleWrite sich innerhalb oder außerhalb der schleife befindet, die werte sind die gleichen.

  • _StringBetween, Zeilen durchnummerieren

    • mitac100
    • 13. Oktober 2018 um 19:28

    Hallo,

    ich stehe im Moment auf dem schlauch.

    Mein Skript mach nur zum Teil was es soll.

    Die Zeilen werden nach dem auslesen aus dem Array so dargestellt.

    Ist Stand:

    1=D:\Documents\KeePass\Test.kdbx

    1=F:\Documents\KeePass\Test.kdbx

    Was muss ich tun um die Zahl um eins zu erhöhen?

    Soll:

    1=D:\Documents\KeePass\Test.kdbx

    2=F:\Documents\KeePass\Test.kdbx

    KeePass

    #include <Array.au3>

    #include<File.au3>

    #include <String.au3>

    Global $Ini = (@UserProfileDir & "\myBackupRestore\myBackup.ini")

    _KeePass()

    Func _KeePass()

    Global $sFilepath = $Ini

    ;~ Local Const $sFilepath = @UserProfileDir & "\mybackuprestore\mybackup.ini"

    Local $hFileOpen = FileOpen($sFilepath, $FO_READ)

    If $hFileOpen = -1 Then

    ;~ MsgBox($MB_SYSTEMMODAL, "", "Fehler beim lesen des Files.")

    Return False

    EndIf

    Local $sFileRead = FileRead($hFileOpen)

    FileClose($hFileOpen)

    ;

    Local $BetweenArray = _StringBetween($sFileRead, "[KeePass]", "[Lizenzvereinbarung]")

    ; Inhalt zwischen [KeePass] und [Lizenzvereinbarung ersetzen.

    Local $sNewString = StringReplace($sFileRead, $BetweenArray[0], @CRLF & "")

    FileDelete($Ini)

    Local $WriteIni = FileWrite($Ini, $sNewString)

    FileClose($WriteIni)

    Local Const $sFilepath = @AppDataDir & "\KeePass\KeePass.config.xml"

    if FileExists($sFilepath) Then

    IniWrite($Ini, "Quellen", "39", @AppDataDir & '\KeePass')

    Else

    IniWrite($Ini, "Quellen", "39", "")

    EndIf

    Local $hFileOpen = FileOpen($sFilepath, $FO_READ)

    If $hFileOpen = -1 Then

    ;~ MsgBox($MB_SYSTEMMODAL, "", "Fehler beim lesen des Files.")

    Return False

    EndIf

    Local $sFileRead = FileRead($hFileOpen)

    FileClose($hFileOpen)

    Local $BetweenArray = _StringBetween($sFileRead, "<Path>", "</Path>", $STR_ENDISSTART)

    For $index = 0 To _ArrayMaxIndex($BetweenArray)

    Local $kdbx = $BetweenArray[$index]

    ;~ _ArraySort($BetweenArray)

    ;~ _ArrayDisplay($BetweenArray)

    $aArrayUnique = _ArrayUnique($BetweenArray) ; Use default parameters to create a unique array of the first column.

    ;~ _ArrayDisplay($aArrayUnique, "$aArray first column") ; Display the unique array.

    ;~ MsgBox($MB_SYSTEMMODAL, "$aArrayUnique ", _ArrayToString($aArrayUnique, @CRLF))

    Local $sFill = ""

    For $i = 0 To $aArrayUnique

    $i = $i + 1

    ;~ For $j = 0 To ubound($BetweenArray[$index])

    ;~ msgbox(0,"$I " ,$i & "=" & $kdbx)

    ;~ $j = $j + 1

    $sFill &= $i & "=" & $kdbx & @CRLF

    ;~ $sFill &= $i + 1 & "=" & $kdbx & @CRLF

    Next

    ;~ next

    ConsoleWrite($sFill)

    Next

    EndFunc ;==>_KeePass


    KeePass.config.xml

    Spoiler anzeigen

    <?xml version="1.0" encoding="utf-8"?>

    <Configuration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <Meta>

    <PreferUserConfiguration>false</PreferUserConfiguration>

    <OmitItemsWithDefaultValues>true</OmitItemsWithDefaultValues>

    </Meta>

    <Application>

    <LastUpdateCheck>2018-10-07T09:38:02Z</LastUpdateCheck>

    <LastUsedFile>

    <Path>D:\Documents\KeePass\Test.kdbx</Path>

    <Path>F:\Documents\KeePass\Test.kdbx</Path>

    <CredProtMode>Obf</CredProtMode>

    <CredSaveMode>NoSave</CredSaveMode>

    </LastUsedFile>

    <MostRecentlyUsed>

    <MaxItemCount>12</MaxItemCount>

    <Items>

    <ConnectionInfo>

    <Path>D:\Documents\KeePass\Test.kdbx</Path>

    <CredProtMode>Obf</CredProtMode>

    <CredSaveMode>NoSave</CredSaveMode>

    </ConnectionInfo>

    </Items>

    </MostRecentlyUsed>

    <WorkingDirectories>

    <Item>Database@D:\Documents\KeePass</Item>

    <Item>Import@D:\Documents</Item>

    </WorkingDirectories>

    <Start>

    <CheckForUpdate>true</CheckForUpdate>

    <CheckForUpdateConfigured>true</CheckForUpdateConfigured>

    </Start>

    <FileOpening />

    <FileClosing />

    <TriggerSystem>

    <Triggers />

    </TriggerSystem>

    </Application>

    <Logging />

    <MainWindow>

    <X>595</X>

    <Y>896</Y>

    <Width>1877</Width>

    <Height>1041</Height>

    <SplitterHorizontalFrac>0.8333</SplitterHorizontalFrac>

    <SplitterVerticalFrac>0.25</SplitterVerticalFrac>

    <Layout>Default</Layout>

    <ToolBar />

    <EntryView />

    <TanView />

    <EntryListColumnCollection>

    <Column>

    <Type>Title</Type>

    <Width>166</Width>

    </Column>

    <Column>

    <Type>UserName</Type>

    <Width>166</Width>

    </Column>

    <Column>

    <Type>Password</Type>

    <Width>166</Width>

    <HideWithAsterisks>true</HideWithAsterisks>

    </Column>

    <Column>

    <Type>Url</Type>

    <Width>166</Width>

    </Column>

    <Column>

    <Type>Notes</Type>

    <Width>166</Width>

    </Column>

    </EntryListColumnCollection>

    <EntryListColumnDisplayOrder>0 1 2 3 4</EntryListColumnDisplayOrder>

    <ListSorting>

    <Order>Ascending</Order>

    </ListSorting>

    </MainWindow>

    <UI>

    <TrayIcon />

    <Hiding />

    <StandardFont>

    <Family>Microsoft Sans Serif</Family>

    <Size>8.25</Size>

    <GraphicsUnit>Point</GraphicsUnit>

    <Style>Regular</Style>

    <OverrideUIDefault>false</OverrideUIDefault>

    </StandardFont>

    <PasswordFont>

    <Family>Courier New</Family>

    <Size>8.25</Size>

    <GraphicsUnit>Point</GraphicsUnit>

    <Style>Regular</Style>

    <OverrideUIDefault>false</OverrideUIDefault>

    </PasswordFont>

    <BannerStyle>WinVistaBlack</BannerStyle>

    <DataEditorFont>

    <Family>Microsoft Sans Serif</Family>

    <Size>8.25</Size>

    <GraphicsUnit>Point</GraphicsUnit>

    <Style>Regular</Style>

    <OverrideUIDefault>false</OverrideUIDefault>

    </DataEditorFont>

    <UIFlags>0</UIFlags>

    <KeyCreationFlags>0</KeyCreationFlags>

    <KeyPromptFlags>0</KeyPromptFlags>

    </UI>

    <Security>

    <WorkspaceLocking>

    <LockAfterTime>0</LockAfterTime>

    <LockAfterGlobalTime>0</LockAfterGlobalTime>

    </WorkspaceLocking>

    <Policy />

    <MasterPassword>

    <MinimumLength>0</MinimumLength>

    <MinimumQuality>0</MinimumQuality>

    </MasterPassword>

    </Security>

    <Native />

    <PasswordGenerator>

    <AutoGeneratedPasswordsProfile>

    <GeneratorType>CharSet</GeneratorType>

    <Length>20</Length>

    <CharSetRanges>ULD_______</CharSetRanges>

    </AutoGeneratedPasswordsProfile>

    <LastUsedProfile>

    <GeneratorType>CharSet</GeneratorType>

    <Length>20</Length>

    <CharSetRanges>ULD_______</CharSetRanges>

    </LastUsedProfile>

    <UserProfiles />

    </PasswordGenerator>

    <Defaults>

    <OptionsTabIndex>0</OptionsTabIndex>

    <SearchParameters>

    <ComparisonMode>InvariantCultureIgnoreCase</ComparisonMode>

    </SearchParameters>

    <KeySources />

    </Defaults>

    <Integration>

    <HotKeyGlobalAutoType>393281</HotKeyGlobalAutoType>

    <HotKeySelectedAutoType>0</HotKeySelectedAutoType>

    <HotKeyShowWindow>393291</HotKeyShowWindow>

    <HotKeyEntryMenu>0</HotKeyEntryMenu>

    <UrlSchemeOverrides>

    <BuiltInOverridesEnabled>1</BuiltInOverridesEnabled>

    <CustomOverrides />

    </UrlSchemeOverrides>

    <ProxyType>System</ProxyType>

    <ProxyAuthType>Auto</ProxyAuthType>

    </Integration>

    <Custom />

    </Configuration>

  • _Array: Daten aus Ini generieren und an FileCopyEx übergeben.

    • mitac100
    • 28. Dezember 2017 um 20:11

    Hallo zusammen,

    @BugFix, danke für den Code, leider bringt mich das im Moment nicht weiter. Die zweite Routine rödelt mehr als 40 Sekunden, danach werden aber keine Daten angezeigt.

    Der Kopiervorgang startet auch nicht.

    @Peter S. Taler, der Kopiervorgang funktioniert mit Oscars Funktion perfekt. Die Excludes sind in der Ini enthalten. Der Anwender kann sie ebenso wie die zu kopierenden Pfade nach belieben erweitern.

    Es geht genau darum was AspirinJunkie geschrieben hat.

    Nur zur Info, in FileCopyEx ist bereits eine Funktion enthalten die vor dem Kopiervorgang ein Array der zu kopierenden Daten erstellt.

    Da ich 40 Einträge habe, werden 40 Arrays in folge erstellt. Ich fände es schöner wenn man die Funktion so aufbohren könnte, das Sie im Vorfeld ein Array für alle Daten erstellt.

    Spoiler anzeigen

    Func _FileCopyEx_CreateArrays($sSourceDir, $sDestDir, ByRef $aSourceFiles, ByRef $aDestDir, $sMask = '*', $iRecur = $FLTAR_RECUR)

    $aSourceFiles = _FileListToArrayRec($sSourceDir, $sMask, $FLTAR_FILES, $iRecur, $FLTAR_SORT)

    If @error Then Return SetError(1, 0, 0) ; wenn sich im Quellverzeichnis keine Dateien befinden, dann Fehlercode = 1

    If IsNumber($aSourceFiles[0]) Then _ArrayDelete($aSourceFiles, 0) ; wenn das Array 1-basiert ist, dann den "Zähler" entfernen

    ReDim $aDestDir[UBound($aSourceFiles)]

    Local $sTmp = ''

    If StringRight($sSourceDir, 1) <> '\' Then $sSourceDir &= '\' ; wenn beim Quellverzeichnis der hintere Backslash fehlt, dann hinzufügen

    If StringRight($sDestDir, 1) <> '\' Then $sDestDir &= '\' ; wenn beim Zielverzeichnis der hintere Backslash fehlt, dann hinzufügen

    For $i = 0 To UBound($aSourceFiles) - 1

    $sTmp = StringRegExpReplace($aSourceFiles[$i], '(.+\\).*', '$1') ; Verzeichnis aus der Quelldatei extrahieren

    If $sTmp = $aSourceFiles[$i] Then $sTmp = '' ; wenn kein Verzeichnis vorhanden, dann einen Leerstring benutzen

    $aDestDir[$i] = $sDestDir & $sTmp ; Zielverzeichnis anhand der Quelldatei erstellen

    $aSourceFiles[$i] = $sSourceDir & $aSourceFiles[$i] ; der Quelldatei das Quellverzeichnis voranstellen

    Next

    Return SetError(0, 0, 1)

    EndFunc ;==>_FileCopyEx_CreateArrays

    Falls sich jemand die UDF mal näher anschauen möchte, hier der Link : _FileCopyEx

    Danke und Grüße

    Mitac.

  • _Array: Daten aus Ini generieren und an FileCopyEx übergeben.

    • mitac100
    • 28. Dezember 2017 um 01:05

    Hallo zusammen,

    ich habe ein Skript welches Daten von A nach B kopiert. Die zu kopierenden Daten sind in der Ini zusammengefasst. Im Moment sind dort 40 Pfade eingetragen, diese können nach Belieben erweitert werden.

    Zum Kopieren verwenden ich die FileCopyEx Funktion von Oscar. Das Ganze funktioniert soweit perfekt.

    Nun zu dem Problem welches ich habe. Die Funktion generiert für jeden Eintrag in der Ini ein neues Array. Das führt jedoch zu Problemen beim Abbruch des Kopiervorgangs, da ich ab der Stelle alle nachfolgenden Kopieraktionen abbrechen muss.

    Ich habe mit Hilfe von Google und AutoIt versucht das Ganze in ein Großes Array zu packen, leider ohne Erfolg.

    Hier im Forum habe ich einen Ansatz dazu gefunden, es gelingt mir jedoch nicht den Code von Barbene03 an meine Bedürfnisse anzupassen. Array Dir Copy with Progressbar (#4)

    Code
    Func _Backup()
    
        Global $q_Array = IniReadSection($ini, "Quellen")
        Global $z_Array = IniReadSection($ini, "Ziel")
        Global $Backup_Ziel_Verzeichnis = ($z_Array[1][1])
        
        ;; Exclude Files & Dirs from Backup
        Global $Exclude_files = IniRead($ini, "Exclude_Files", "Files", "default")
        Global $Exclude_Dir = IniRead($ini, "Exclude_Dir", "Dirs", "default")
        
        For $i = 1 To $q_Array[0][0]
            $array_Quelle = ($q_Array[$i][1])
            $Quell_Verzeichnis = StringReplace($array_Quelle, "*Userprofil*", @UserProfileDir)
            $Quell_Laufwerk = StringLeft($Quell_Verzeichnis, 3)
            $Quell_Buchstabe = StringLeft($Quell_Verzeichnis, 1)
            
            $Backup_Ziel = StringReplace("Drive_" & $Quell_Verzeichnis, ":", "")
            $Backup_Ziel_Pfad = ($Backup_Ziel_Verzeichnis & "\" & $Backup_Ziel)
            $Ziel = ($Backup_Ziel_Pfad)
            
            Sleep(1000)
            
            Global $sSourceDir = $Quell_Verzeichnis ; alle Dateien aus diesem Verzeichnis sollen kopiert werden
            Global $sDestDir = $Ziel ; die Quelldateien sollen (mit Unterverzeichnissen) in dieses Verzeichnis kopiert werden
            Global $aSourceFiles[1], $aDestDir[1]
            
            If GUICtrlRead($Outlook) = "1" Then ;; Sicherung inkl. PST Dateien
                ;; '*|*.ost|Ordner' Ordner welche nicht kopiert werden sollen
                _FileCopyEx_CreateArrays($sSourceDir, $sDestDir, $aSourceFiles, $aDestDir, '*|' & $Exclude_files & '|' & $Exclude_Dir & "'") ; diese Funktion erstellt die Arrays für _FileCopyEx
                
            ElseIf GUICtrlRead($Outlook) = "4" Then ;; Sicherung ohne PST Dateien
                ;; '*|*.ost|Ordner' Ordner welche nicht kopiert werden sollen
                _FileCopyEx_CreateArrays($sSourceDir, $sDestDir, $aSourceFiles, $aDestDir, '*|*.pst' & $Exclude_files & '|' & $Exclude_Dir & "'") ; diese Funktion erstellt die Arrays für _FileCopyEx
            EndIf
                
            If Not @error Then
                Global $sLog = _FileCopyEx($aSourceFiles, $aDestDir, 16 + 8 + 2 + 1, 'Dateien kopieren...') ; hier erfolgt dann das kopieren
                ConsoleWrite('Fehler: ' & @error & @CRLF)
                ConsoleWrite($sLog & @CRLF)
                
                Global $Backuplog = (@UserProfileDir & '\_Datenaufnahme')
                $boottime = _DateAdd('s', -Int(_Date_Time_GetTickCount() / 1000), _NowCalc())
                $date = @MDAY & "." & @MON & "." & @YEAR
                
                FileWrite($Backuplog & "\_Log_" & $date & ".txt", "____________________________________________  Sicherung  __________________________________________")
                FileWrite($Backuplog & "\_Log_" & $date & ".txt", @CRLF)
                FileWrite($Backuplog & "\_Log_" & $date & ".txt", @CRLF)
                FileWrite($Backuplog & "\_Log_" & $date & ".txt", "Start Logging: " & @HOUR & ":" & @MIN & ":" & @SEC & " Uhr " & "  -   " & "Datum: " & $date & @CRLF)
                FileWrite($Backuplog & "\_Log_" & $date & ".txt", "_________________________________________________________________________________________________" & @CRLF)
                FileWrite($Backuplog & "\_Log_" & $date & ".txt", 'Fehler: ' & @error & @CRLF)
                FileWrite($Backuplog & "\_Log_" & $date & ".txt", $sLog & @CRLF)
            EndIf
        Next
        
        DirCopy(@UserProfileDir & "\_Datenaufnahme", $Backup_Ziel_Verzeichnis & "\_Datenaufnahme", $FC_OVERWRITE)
        FileCopy(@AppDataDir & "\myBackup\myBackup.ini", $Backup_Ziel_Verzeichnis & "\_Datenaufnahme\")
    
        Local $sString = StringLeft($Backup_Ziel_Verzeichnis, 3)
    ;~     FileCopy(@ScriptDir & "\Datenaufnahme.exe", $sString & "\Datenaufnahme.exe")
        FileCopy(@ScriptDir & "\myBackup - Kopie.exe", $sString & "\myBackup.exe", $FC_OVERWRITE)
    
        If Not FileExists($Backup_Ziel_Verzeichnis & "UserProfileDir.txt") Then
            FileWrite($Backup_Ziel_Verzeichnis & "_UserProfileDir.txt", @UserProfileDir)
            Sleep(1000)
            
            _Stop_Proggress()
            
            If Not @error Then
                $Fehler = "Sicherung beendet! (Keine Fehler!)"
            Else
                $Fehler = "Sicherung beendet! (Es sind Fehler aufgetreten, näheres im Log.)"
            EndIf
            
            _ExtMsgBoxSet(-1, 4, -1, -1, 11, "Calibri", 900)
            $sMsg = $Fehler & @CRLF & @CRLF
            $sMsg &= "Schließen Sie myBackup." & @CRLF & @CRLF
            $sMsg &= "Vor dem herausziehen, deaktivieren Sie den USB-Stick." & @CRLF & @CRLF
            $sMsg &= "Wählen Sie 'Hardware sicher entfernen' (USB-Symbol) rechts unten in der Taskleiste." & @CRLF & @CRLF & @CRLF
            $sMsg &= "Rücksicherung:" & @CRLF & @CRLF
            $sMsg &= "Diese kann per myBackup oder manuell erfolgen." & @CRLF & @CRLF
            $sMsg &= "Starten Sie 'myBackup' von diesem USB-Stick. " & @CRLF & @CRLF
            $sMsg &= "" & @CRLF & @CRLF
            $sMsg &= "Eine Anleitung zum einbinden der Persönlichen Ordner und Drucker finden Sie in der 'Datenaufnahme'." & @CRLF & @CRLF
            $iRetValue = _ExtMsgBox(0, "OK", "Sicherung beendet!", $sMsg)
            _ExtMsgBoxSet(Default)
        EndIf
    EndFunc   ;==>_Backup
    Alles anzeigen

    Die Ini ist wie folgt aufgebaut:

    [Quellen]

    01=d:\Documents\Desktop

    02=d:\Documents

    03=C:\Users\Mitac\Downloads

    04=C:\Users\Mitac\Favorites

    05=C:\Users\Mitac\Music

    06=C:\Users\Mitac\Pictures

    07=C:\Users\Mitac\Videos

    08=C:\Users\Mitac\Links

    09=C:\Users\Mitac\Documentum

    10=C:\Users\Mitac\Kontakte

    11=C:\Users\Mitac\_Datenaufnahme

    12=C:\Users\Mitac\AppData\Local\Microsoft\OneNote

    13=C:\Users\Mitac\AppData\Local\Microsoft\FORMS

    Vielleicht kann mir jemand von Euch ein paar Zeilen Code zur Verfügung stellen mit der sich das realisieren lässt.

    Im Voraus vielen Dank. Mitac

  • Registry - MRU Werte lassen sich nicht exportieren

    • mitac100
    • 28. Oktober 2017 um 19:45

    Funktioniert :)

    Vielen Dank Bitnugger

  • Registry - MRU Werte lassen sich nicht exportieren

    • mitac100
    • 28. Oktober 2017 um 02:23

    Hallo,

    beim Exportieren der MRU Werte per ini erhalte ich folgende FM:

    FEHLER: Ungültige Syntax.

    Geben Sie "REG EXPORT /?" ein, um die Syntax anzuzeigen.

    Die anderen Schlüssel werden sauber exportiert.

    So, werden auch die MRU Werte exportiert.

    RunWait(@Comspec & ' /k reg EXPORT "HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Access\File MRU" Access_16_File_MRU.reg',@ScriptDir & "\Regkeys", @sw_show)

    Hat jemand eine Idee woran es liegen könnte?

    [Registry]

    Jumplistitems_Maximum="HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced"

    TypedPaths="HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\TypedPaths"

    Network="HKEY_CURRENT_USER\Network"

    Control_Panel="HKEY_CURRENT_USER\Control Panel"

    Access_16_File_MRU="HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Access\File MRU"

    Access_16_Place_MRU="HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Access\Place MRU"

    Excel_16_File_MRU="HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\File MRU"

    Excel_16_Place_ MRU ="HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Excel\Place MRU"

    OneNote_16_Place_ MRU ="HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\OneNote\Place MRU"

    Outlook_16_Profiles="HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Profiles"

    Word_16_File_ MRU ="HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\File MRU"

    Word_16_Place_MRU="HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Word\Place MRU"

    Code
    #include <MsgBoxConstants.au3>
    
    Reg_Export()
    
    
    Func Reg_Export()
    $ini = @scriptdir & "\myBackup.ini"
    
    ;~         ; Read the INI section labelled 'General'. This will return a 2 dimensional array.
        Local $aArray = IniReadSection($ini, "Registry")
    
    ;~     ; Check if an error occurred.
        If Not @error Then
    ;~         ; Enumerate through the array displaying the keys and their respective values.
            For $i = 1 To $aArray[0][0]
        
            MsgBox($MB_SYSTEMMODAL, "", "Key: " & $aArray[$i][0] & @CRLF & "Value: " & $aArray[$i][1])
    
    Run(@comspec & ' /k reg export ' & '"' & $aArray[$i][1] & '"' & " " & $aArray[$i][0] & ".reg /Y", @ScriptDir & "\Regkeys", @SW_show)
    
            Next
        EndIf
    EndFunc
    Alles anzeigen
  • Per Checkbox addieren / subtrahieren

    • mitac100
    • 21. Oktober 2017 um 19:28

    Hallo zusammen,

    ich habe wieder mal ein (für euch sicherlich) kleines Problemchen.

    Es geht um die beiden Checkboxen unter Sicherung.

    Beim deaktivieren/aktivieren der jeweiligen Box, soll der Status aktualisiert werden.

    Funktioniert leider nicht wie ich es gerne hätte.

    Im voraus vielen Dank.

    Grüße


    Mitac

    Dateien

    _myBackup_Restore_1.0.3.9.1.zip 4,79 kB – 510 Downloads
  • Per Checkbox addieren / subtrahieren

    • mitac100
    • 8. Oktober 2017 um 18:48

    Funktioniert wunderbar - <3 Dank autoiter.

    Gruß mitac

  • Per Checkbox addieren / subtrahieren

    • mitac100
    • 8. Oktober 2017 um 17:18

    Hallo autoiter,

    bei Punkt eins komme ich leider immer noch nicht weiter.

    Wenn ich _ArraySearch in den Code einbaue, erfolgt eine Dauer Meldung das „Kein Volume ausgewählt“ ist.

    Punkt zwei funktioniert.

    Aufgrund der Zeichen Beschränkung hatte ich den Code gekürzt, leider hat sich da ein Fehler eingeschlichen.

    myBackup_Restore_1.0.3.1.zip

  • Per Checkbox addieren / subtrahieren

    • mitac100
    • 7. Oktober 2017 um 22:14

    1. Problem - Beim klicken des Radio Buttons erfolgt keine Aktivität. Über den Schalter "Ausgewählte..." klappt alles wunderbar. Was mache ich falsch?

    2. Wenn ich zwei Sticks angeschlossen habe und diese abwechselnd in die ini schreiben lasse, erhalte ich folgende FM: (312) : ==> Can not redeclare a constant

    C
    #Region #### AutoIt Includes ####
    #include <Array.au3>
    #include <Clipboard.au3>
    #include <ColorConstants.au3>
    ;~ #include 'Datenaufnahme.au3'
    #Include <File.au3>
    ;~ #include '_FileCopyEx.au3'
    #include <GDIPlus.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIconstants.au3>
    #include <Misc.au3>
    #include <MsgBoxConstants.au3>
    #include <Process.au3>
    #include <ScreenCapture.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #EndRegion #### AutoIt Includes ####
    
    Opt('GUICloseOnEsc', 0)
    
    Global $sTitle = ' myBackup - '
    Global $sVersion = '1.0.3'
    Global $sDate = '28.08.2017'
    
    Global $hGui = GUICreate(StringFormat('%s v%3.5s', $sTitle, $sVersion), 302,300,-1,300) ; Fenster erstellen
    $Label_1=GuiCtrlCreateLabel("Status:",26,10,50,15)
    $Label_2=GuiCtrlCreateLabel("Kein USB-Medium gefunden!",70,10,200,15)
             GUICtrlCreateGroup("  Ziellaufwerk wählen                                 Freier Platz", 10, 115, 281, 80) ; Umrandung Ziellaufwerk
    $Label_3=GuiCtrlCreateLabel("Größe der zu sichernden Daten:" ,26,30,270,15)
    $Label_4=GuiCtrlCreateLabel("GB",197,30,75,15,0x2) ; 0x2 mittig
            GUICtrlCreateGroup("", 10, 55, 281, 50)  ; Umrandung Outlook             
    
    $Label_5=GuiCtrlCreateLabel("Outlook ",26,55,50,15)  
    Local $Outlook = GUICtrlCreateCheckbox("Persönliche Ordner sichern", 26, 75, 200, 20)
    GUICtrlSetState(-1, 0) ; unchecked
    
    $btnBackup = GUICtrlCreateButton("  Backup  ", 26, 250) 
    
    
    $btnIni = GUICtrlCreateButton("  Edit ini...  ", 120, 250)
    
    $btnRestore = GUICtrlCreateButton("  Restore  ", 215, 250)
    
    $hStart = GUICtrlCreateButton('Ausgewählte Volumes anzeigen', 15, 200, 275, 25)
    
    If Not FileExists(@ScriptDir & "\myBackup.ini") Then
                  
                _ini_create()
    
    EndIf
     
    #Region ### ini_read ####
    Global $q_Array = IniReadSection(@ScriptDir & "\myBackup.ini", "Quellen")
    Global $z_Array = IniReadSection(@ScriptDir & "\myBackup.ini", "Ziel")
    
    Global $Backup_Ziel_Verzeichnis = ($z_Array[1][1] )
     
    If $Backup_Ziel_Verzeichnis = "@ScriptDir" Then
                  $Backup_Ziel_Verzeichnis= StringReplace($Backup_Ziel_Verzeichnis,"@ScriptDir",@ScriptDir)
                  $Backup_Ziel_Verzeichnis= ($Backup_Ziel_Verzeichnis &"\Backup\")
    EndIf
     
                  local $tmp = 0
                  For $i = 1 To $q_Array[0][0]
     
                    $array_Quelle = ($q_Array[$i][1])
                    $Quell_Verzeichnis = StringReplace($array_Quelle, "*Userprofil*", @UserProfileDir)
                    $Quell_Laufwerk = StringLeft($Quell_Verzeichnis,3)
                    $Quell_Buchstabe = StringLeft($Quell_Verzeichnis,1)                          
                    Local $Ordner = DirGetSize($q_Array[$i][1])                                                                                                                                                      
                    DirGetSize($Quell_Verzeichnis)
                    $tmp +=($Ordner) ;Größe zusammenrechnen
    
                    Next
          
                    GUICtrlSetData($Label_3,"Größe der zu sichernden Daten:")
                    $gesammt = GUICtrlSetData($Label_4, round(($tmp /1024 /1024), 0) & " MB")
    
    #EndRegion ### ini_read ####
    
    GUISetState(@SW_SHOW, $hGui) ; Show GUI
    
    _USB_Medium() ;Ist ein USB-Medium angeschlossen?
    
    #Region ### _ini_create ####
    Func _ini_create()
        
                  ; Create a constant variable in Local scope of the filepath that will be read/written to.
                  Local Const $sFilePath = @ScriptDir & "\myBackup.ini"
     
                  ; Create a temporary file to write data to.
                  If Not FileWrite($sFilePath, "" & @CRLF) Then
                                MsgBox($MB_SYSTEMMODAL, "", "Fehler - ini- Datei kann nicht erstellt werden!")
                                Return False
                  EndIf
     
                  ; Open the file for writing (append to the end of a file) and store the handle to a variable.
                  Local $hFileOpen = FileOpen($sFilePath, $FO_APPEND)
                  If $hFileOpen = -1 Then
                                MsgBox($MB_SYSTEMMODAL, "", "Fehler - ini- Datei kann nicht erstellt werden!")
                                Return False
                  EndIf
                                
                  ; Write data to the file using the handle returned by FileOpen.
                FileWrite($hFileOpen, "In dieser Datei werden die zu sichernden Pfade festgelegt, die mit dem myBackup Tool gesichert werden sollen" & @CRLF)
                FileWrite($hFileOpen, "" & @CRLF)
                FileWrite($hFileOpen, "-------------------------------------       Bitte hier keine änderung vornehmen!      -------------------------------------" & @CRLF)
                FileWrite($hFileOpen, "[Quellen]" & @CRLF)
                FileWrite($hFileOpen, "1=" & @DesktopDir & @CRLF)
                FileWrite($hFileOpen, "[Ziel]" & @CRLF)
                FileWrite($hFileOpen, "1=" & @CRLF)
                  
                ; Close the handle returned by FileOpen.
                FileClose($hFileOpen)
    #EndRegion ### _ini_create ####
    
    #Region ### ini_Info ####
        
    GUICreate("Ini-Datei nicht gefunden...", 500, 300) ; will create a dialog box that when displayed is centered
    Local $idMyedit = GUICtrlCreateEdit("",10, 10, 480, 250, $ES_READONLY)
    
    GUISetBkColor(0xFFFABB) ;; 0xFFFFFF)
    GUICtrlSetColor(-1, 0x000000)
    GUICtrlSetFont(-1, 9, 800, 0, "Arial")
    
        $btnOK = GUICtrlCreateButton("  OK  ", 235, 270, 50, 25)
    
        While 1
            Switch GUIGetMsg()
                
                Case $GUI_EVENT_CLOSE
                    ExitLoop
                    
                Case $btnOK
                    ExitLoop
            EndSwitch
        WEnd
        GUIDelete()
    EndFunc   ;==>create_ini
    #EndRegion ### ini_Info ####
    
    #Region ### USB_Medium ####
    func _USB_Medium()
                  
    Global $drives=DriveGetDrive("removable")
     
    If @error Then
        Sleep(2000)
        MsgBox(16,"Kein USB-Stick gefunden!","Kein USB-Stick gefunden!" & @cr &  @cr & "Bitte schliessen Sie einen USB-Stick an!" & @cr & @cr & "Die Anwendung wird beendet.",20000)              
    EndIf
     
    dim $name[$drives[0]+1]
    dim $space[$drives[0]+1]
    $maxname=2
    $maxspace=0
    for $i=1 to $drives[0]
      $name[$i]=StringLen(DriveGetLabel($drives[$i]))
      if $name[$i]>=$maxname then
        $maxname=$name[$i]
      endif
      $space[$i]=StringLen(Round(DriveSpaceFree($drives[$i])))
      if $space[$i]>=$maxspace then
        $maxspace=$space[$i]
      endif
    Next
     
     
    $width=($maxname+$maxspace)+8+150
    if $width<210 then $width=300              
                  
    
    For $i=1 to $drives[0]
      If $i=0 Then 
        GUICtrlSetData($Label_2,"Kein USB Medium angeschloßen!")
        Sleep(5000)
        MsgBox(16,"Kein USB-Medium gefunden!","Kein USB-Medium gefunden!" & @CR & "Die Anwendung wird jetzt beendet." & @cr & $Label_3 & " " & $Label_4,30000)      
        Exit
      Else
        If $i=NOT 0 Then        
          GUICtrlSetData($Label_2,"USB-Medium gefunden...") ;;report drives found     
        EndIf 
      EndIf
    Next
                  
                  
    dim $chkboxes[$drives[0] + 1]
    $chkboxes[0]=$drives[0]
    $Ypos=130
    for $i=1 to $drives[0]
      $chkboxes[$i]=GUICtrlCreateRadio(StringUpper($drives[$i]), 26,$Ypos,35,20) ;; & " (" & DriveGetLabel($drives[$i]) & ")"),26,$Ypos,($maxname+5)*8,20)
      GuiCtrlSetState(-1,$GUI_UNCHECKED)
      $Ypos=$Ypos+20
    next
    $Ypos=130
    for $i=1 to $drives[0]
      $FreeMem=GuiCtrlCreateLabel(Round(DriveSpaceFree($drives[$i])) & " MB",198,$Ypos,75,15,0x2)
    
      $Ypos=$Ypos+20
    next 
    
    #Region Test
    
    
    $sCheckedDrives = ''
    For $i = 1 To $drives[0]
    If BitAND(GUICtrlRead($chkboxes[$i]), 1) Then
    $sCheckedDrives &= ControlGetText("", '', $chkboxes[$i]) & ''
    EndIf
    
    
    
    ;~ $sCheckedDrives = ''
    ;~ For $i = 1 To $drives[0]
    If BitAND(GUICtrlRead($chkboxes), $GUI_CHECKED) = $GUI_CHECKED Then
    ;~ If BitAND(GUICtrlRead($sCheckedDrives), $GUI_CHECKED) = $GUI_CHECKED Then
    ;~ $sCheckedDrives &= ControlGetText("", '', $chkboxes[$i]) & ''
        MsgBox(64, 'Info', $sCheckedDrives & "\Datensicherung111_" & @UserName) , 60, $hGUI)
    EndIf
    
    ;~ If GUICtrlRead($chkboxes[$i]), 1) = $GUI_CHECKED Then
    ;~ MsgBox(64, 'Info', $sCheckedDrives & "\Datensicherung_" & @UserName) ;;, 60, $hGUI)
    
    ;~ EndIf
    
    Next
    
    #Region Loop
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    Exit
    Case $hStart
    
    $sCheckedDrives = ''
    For $i = 1 To $drives[0]
    If BitAND(GUICtrlRead($chkboxes[$i]), 1) Then
    $sCheckedDrives &= ControlGetText("", '', $chkboxes[$i]) & ''
    EndIf
    Next
    
    If $sCheckedDrives <> '' Then 
                    
    MsgBox(64, 'Info', $sCheckedDrives & "\myBackup_" & @UserName, 60, $hGUI)
     
                  Local Const $sFilePath = (@ScriptDir & "\myBackup.ini")
                   IniWriteSection($sFilePath, "Ziel", "1=" & $sCheckedDrives & "\myBackup_" & @UserName & "\")
                  Local $aArray = IniReadSection($sFilePath, "Ziel")
                  If Not @error Then
                  ShellExecute("myBackup.ini")
                  EndIf
    Else
    MsgBox(64, 'Info', 'Keine Volumes ausgewählt', 60, $hGUI)
    EndIf
    
    Case $Outlook 
            _Outlook()
    
    Case $btnIni 
            _edit_ini()
     
    Case $btnBackup; If backup button is pressed.
            _Backup() ; Start backup
     
    Case $btnRestore; If backup button is pressed.
            _CaptureScreen() ; Start backup
     
    
    EndSwitch
    WEnd
    EndFunc  ;Ende - USB-Medium angeschlossen?
    #EndRegion ### USB_Medium ####
    
    #Region ### Edit Ini ####
    Func _edit_ini()
        
        If Not FileExists(@ScriptDir & "\myBackup.ini") Then    
                _ini_create()
            Else
            ShellExecute("myBackup.ini")
        EndIf
    EndFunc
    #EndRegion ### Edit Ini ####
    Alles anzeigen
  • Per Checkbox addieren / subtrahieren

    • mitac100
    • 3. Oktober 2017 um 19:21

    Perfekt! Danke Oscar.

    Gruß Mitac

  • Per Checkbox addieren / subtrahieren

    • mitac100
    • 3. Oktober 2017 um 18:32

    Hallo autoiter,

    das bringt mich auch nicht weiter. Vielmehr stellt sich mir die Frage, wie muss die FOR/NEXT Schleife aussehen, damit alle Pfade gesplittet sind.

    Im Moment funktioniert das nur mit dem letzten Pfad.

    Nur zur Info. Ich bin ein Newbie was Coden angeht. Falls Du, oder jemand anders mir den Code bereitstellen würde, wäre ich sehr dankbar.

    Ist:

    C:\Users\MeineID\AppData\Local\Microsoft\Outlook\meine.mail@gmail.com.ost

    D:\Documents\Outlook-Dateien\iCloud Archive.pst

    D:\Ordner\Orner1\Ordner2\Outlook-Dateien\iCloud Archive1.pst

    F:\Ordner\iCloud Archive2.pst

    G:\Ordner\Ordner1\Ordner2\Ordner3\Outlook-Dateien\iCloud Archive3.pst

    C:\Users\MeineID\AppData\Local\Microsoft\Outlook\meine.mail1@gmail.com.ost

    Soll:

    C:\Users\MeineID\AppData\Local\Microsoft\Outlook

    D:\Documents\Outlook-Dateien

    D:\Ordner\Orner1\Ordner2\Outlook-Dateien

    F:\Ordner

    G:\Ordner\Ordner1\Ordner2\Ordner3\Outlook-Dateien

    C:\Users\MeineID\AppData\Local\Microsoft\Outlook

    Grüße mitac

  • Per Checkbox addieren / subtrahieren

    • mitac100
    • 3. Oktober 2017 um 14:17

    Hallo,

    wie muss das Script erweitert werden damit alle Pfade gesplittet werden.

    Im Moment wird nur der letzte Pfad gesplittet.

    C:\Users\MeineID\AppData\Local\Microsoft\Outlook\meine.mail@gmail.com.ost

    D:\Documents\Outlook-Dateien\iCloud Archive.pst

    D:\Ordner\Orner1\Ordner2\Outlook-Dateien\iCloud Archive1.pst

    F:\Ordner\iCloud Archive2.pst

    G:\Ordner\Ordner1\Ordner2\Ordner3\Outlook-Dateien\iCloud Archive3.pst

    C:\Users\MeineID\AppData\Local\Microsoft\Outlook\meine.mail1@gmail.com.ost

    AutoIt
    $sText = FileRead(@ScriptDir & "\Persönliche_Ordner.txt")
    
    Global $text = ''
    $a = _PathSplit1($sText)
    ;~ $a = _PathSplit1(@ScriptFullPath)
    For $i = 0 To UBound($a) - 1
    $text &= $a[$i] & @CRLF
    Next
    MsgBox(0, "", $text)
    
    Func _PathSplit1($sPath)
    If $sPath = "" Or StringRegExp($sPath, ('.*\\.*\/')) Then Return SetError(1, 0, -1)
    Local $RetArray[8], $pDelim = ""
    If StringRegExp($sPath, '^(?i)([A-Z]:|\\)(\\[^\\]+)+$') Then $pDelim = "\"
    If StringRegExp($sPath, '(?i)(^.*:/)(/[^/]+)+$') Then $pDelim = "//"
    If $pDelim = "" Then $pDelim = "/"
    If Not StringInStr($sPath, $pDelim) Then Return $sPath
    If $pDelim = "\" Then $pDelim &= "\"
    ;~ $RetArray[0] = $sPath ;; Alles
    ;~ $RetArray[1] = StringRegExpReplace($sPath, $pDelim & '.*', $pDelim)     ;;  Laufwerk
    $RetArray[2] = StringRegExpReplace($sPath, $pDelim & '[^' & $pDelim & ']*$', '')  ;;  Laufwerk + Pfad
    ;~ $RetArray[3] = StringRegExpReplace($sPath, '\.[^.]*$', '')    ;;  Laufwerk + Pfad + Dateiename ohne Endung
    ;~ $RetArray[4] = StringRegExpReplace($sPath, '(?i)([A-Z]:' & $pDelim & ')', '')  ;;  Voller Pfad ohne Laufwerksbuchstaben
    ;~ $RetArray[5] = StringRegExpReplace($sPath, '^.*' & $pDelim, '')  ;; Dateiename + Endung
    ;~ $RetArray[6] = StringRegExpReplace($RetArray[5], '\.[^.]*$', '') ;; Dateiename
    ;~ $RetArray[7] = StringRegExpReplace($sPath, '^.*\.', '') ;; Dateiendung
    Return $RetArray
    EndFunc ;==>_PathSplit1
    Alles anzeigen

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™