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

  • Per Checkbox addieren / subtrahieren

    • mitac100
    • 26. September 2017 um 21:20

    Hallo autoiter,

    danke für den Tipp. Aufgrund dessen habe ich hier im Forum einen Beitrag gefunden der mich ein Stückchen weiterbringen wird, hoffe ich.

    https://autoit.de/index.php?thread/84828-ich-ben%C3%B6tige-einen-denkanstoss-beim-kopieren-von-dateien/&postID=678645#post678645"Ich benötige einen Denkanstoss beim kopieren von Dateien

    Grüße, Mitac

  • Per Checkbox addieren / subtrahieren

    • mitac100
    • 26. September 2017 um 19:41

    Hallo zusammen,

    ich bräuchte mal euere Hilfe. Für die weitere Verarbeitung der Daten, benötige ich den Pfad wo sich die PST-Dateien befinden, der Name ist unwichtig.

    Die Pfade sollen der Reihe nach, zu einer bestehenden ini (ab Zeile 21) hinzugefügt werden.

    Mit dem Script lese ich die Pfade aus der Registry heraus. Es werden jedoch nur die zum Zeitpunkt registrierten PST-Dateien aufgelistet.

    Outlook_suche

    #include <Array.au3>

    #include <Date.au3>

    #include <File.au3>

    Local $s[15], $r[15], $ss[15], $rr[15]

    For $i = 1 To 15

    $s[$i] = RegEnumVal("HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Search\", $i)

    ;$x[$i][0] = $s[$i]

    If @error <> 0 Then ExitLoop

    If $s = "" Then

    ContinueLoop

    EndIf

    Next

    For $i = 1 To 15

    $r[$i] = RegEnumVal("HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Search\", $i)

    ;$x[$i][1] = $r[$i]

    If @error <> 0 Then ExitLoop

    If $r = "" Then

    ContinueLoop

    EndIf

    Next

    For $i = 1 To 15

    $ss[$i] = RegEnumVal("HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Outlook\Search\", $i)

    ;$x[$i][0] = $ss[$i]

    If @error <> 0 Then ExitLoop

    If $ss = "" Then

    ContinueLoop

    EndIf

    Next

    For $i = 1 To 15

    $rr[$i] = RegEnumVal("HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Outlook\Search\", $i)

    ;$x[$i][1] = $rr[$i]

    If @error <> 0 Then ExitLoop

    If $rr = "" Then

    ContinueLoop

    EndIf

    Next

    _ArrayAdd($s, $r + $ss + $rr)

    Local $aArrayUnique = _ArrayUnique($s) ; Use default parameters to create a unique array.

    ;_ArrayDisplay($aArrayUnique, "$aArray Unique") ; Display the unique array.

    $zz = UBound($aArrayUnique) - 1

    For $j = $zz To 1 Step -1

    If $aArrayUnique[$j] = "" or not FileExists($aArrayUnique[$j]) Then

    _ArrayDelete($aArrayUnique, $j)

    ElseIf FileExists($aArrayUnique[$j]) Then

    $aArrayUnique[$j] = $aArrayUnique[$j]

    Else

    ContinueLoop

    EndIf

    Next

    $ee = UBound($aArrayUnique) - 1

    $aArrayUnique[0] = $ee

    $sShortMonthName = _DateToMonth(@MON, $DMW_SHORTNAME)

    $yr = @YEAR

    $dy = @MDAY

    $Snow = _NowTime(5)

    $DT = $sShortMonthName & "_" & $dy & "_" & $yr & "," & $Snow

    FileWrite(@DesktopDir & "\PstOst.txt", $DT & @CRLF & "File PST/OST file locations." & @CRLF & @CRLF)

    For $t = 1 To UBound($aArrayUnique) - 1

    FileWrite(@DesktopDir & "\PstOst.txt", $aArrayUnique[$t] & @CRLF)

    Next

    _ArrayDisplay($aArrayUnique, "Outlook Current PST/OST", "0:" & $ee, 80)

    FileWrite(@DesktopDir & "\PstOst.txt", @CRLF & @CRLF)

    Exit

    Der Text ist wie folgt aufgebaut:

    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

    Die ini sieht so aus.

    [Quellen]

    1=d:\Documents\Desktop

    2=d:\Documents

    …

    …

    …

    21=

    22=

    usw.


    Mit folgendem Skript kann ich mir das Ergebnis anzeigen lassen, danach weis ich jedoch nicht weiter.

    Spoiler anzeigen

    #include<File.au3>

    #include <Array.au3>

    $pString = FileRead(@ScriptDir & "\PstOst.txt")

    $pPST = StringRegExp($pString, ".*pst", 3)

    ;~ MsgBox(64, "Ergebnis", $sString)

    _ArrayDisplay($pPST)

    Um auch die nicht registrierten PST-Dateien außerhalb Outlooks zu erkennen, verwende ich folgendes Skript.

    Spoiler anzeigen

    DirCreate(@ScriptDir & '\Outlook')

    RunWait(@ComSpec & " /c " & 'dir D:\*.pst /b /s >' & @ScriptDir & '\Outlook\Outlook.txt', "", @SW_HIDE)

    $file1txt = FileRead(@ScriptDir & '\Outlook\Outlook.txt', FileGetSize(@ScriptDir & '\Outlook\Outlook.txt'))

    $file1txtARRAY = StringSplit($file1txt, @CRLF, 1)

    For $i = 1 To $file1txtARRAY[0]

    Next

    Zusätzlich wäre hier noch die Frage, wie man verhindern kann das der gleiche Pfad mehrfach in die Ini geschrieben wird.

    Das Ganze sieht so aus:

    D:\Documents\Desktop\Ordner\Kontakte\Kontakte.pst

    D:\Documents\Outlook\Kopie von meinOrdner.pst

    D:\Documents\Outlook\Outlook1 - Kopie.pst

    D:\Documents\Outlook\Outlook1.pst

    D:\Documents\Outlook\Outlsend.to.com-00000006.pst

    D:\Documents\Outlook\Meine.pst

    D:\Documents\Outlook-Dateien\gmail.com.pst

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

    Für euch wird das alles kein Problem sein, für mich „Newbie“, stellt das alles eine riesen Hürde dar.

    Fertiger Code ist herzlich willkommen.

    Grüße, Mitac

  • Backup Tool - FileCopyEx erstellt keine Ordner

    • mitac100
    • 27. August 2017 um 12:35

    Der Befehl ist mir bekannt.
    Es geht mir vielmehr darum wie ich die Func _check() (erstes Posting) anpassen muss, damit er im zweiten Posting funktioniert.
    Hilfreich wäre der komplette Code.

  • Backup Tool - FileCopyEx erstellt keine Ordner

    • mitac100
    • 27. August 2017 um 11:41

    Mit dem folgendem Script werden die Ordner erstellt. Allerdings weis ich nicht wie ich die Größe von Start und Ziel überprüfen kann.

    Spoiler anzeigen

    #Include <File.au3>
    #include <Date.au3>
    #include <Misc.au3>
    #include '_FileCopyEx.au3'

    #include <Date.au3>
    #include <File.au3>
    #include <FileConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <GuiStatusBar.au3>
    #include <WinAPIFiles.au3>

    Dim $goOut = 0

    Global $iSectionCount = 2 ; Anzahl der Ordner


    Global $aStartDir[$iSectionCount] ; Array für die Quellverzeichnisse erstellen
    $Quell_LW = @UserProfileDir
    $aStartDir[0] = @UserProfileDir & '\Desktop' ; <- Quellverzeichnis 1 (Index 0) festlegen
    $aStartDir[1] = 'i:\Slike\_00000010\' ; <- Quellverzeichnis 2 (Index 1) festlegen
    ;~ $aSourceDir[2] = ''
    ;~ $aSourceDir[3] = ''
    ; ...


    Global $aZielDir[$iSectionCount] ; Array für die Zielverzeichnisse erstellen
    $Ziel_LW = "H:\"
    $aZielDir[0] = $Ziel_LW & @UserName & '\Drive_C\Desktop' ; <- Zielverzeichnis 1 (Index 0) festlegen
    $aZielDir[1] = $Ziel_LW & 'Datensicherung_' & @UserName & '\Drive_C\Slike' ; <- Zielverzeichnis 2 (Index 1) festlegen
    ;~ $aDestDir[2] = ''
    ;~ $aDestDir[3] = ''
    ; ...

    For $iSection = 0 To $iSectionCount - 1 ; die einzelnen Quellverzeichnisse durchgehen

    Global $sSourceDir = ($aStartDir[$iSection]) ; alle Dateien aus diesem Verzeichnis sollen kopiert werden
    Global $sDestDir = ($aZielDir[$iSection]) ; die Quelldateien sollen (mit Unterverzeichnissen) in dieses Verzeichnis kopiert werden
    Global $aSourceFiles[1], $aDestDir[1]

    _FileCopyEx_CreateArrays($sSourceDir, $sDestDir, $aSourceFiles, $aDestDir, '*') ; diese Funktion erstellt die Arrays für _FileCopyEx
    If Not @error Then
    Global $sLog = _FileCopyEx($aSourceFiles, $aDestDir, 16 + 8 + 2 + 1, 'Dateien kopieren...') ; hier erfolgt dann das kopieren
    ConsoleWrite('Fehler: ' & @error & @CR)
    ConsoleWrite($sLog & @CR)

    EndIf
    Next

  • Backup Tool - FileCopyEx erstellt keine Ordner

    • mitac100
    • 27. August 2017 um 11:35

    Nein, die UDF macht es nicht.

    Zitat von alpines

    Erstell doch die Ordner mittels DirCreate oder übernimmst das die UDF schon?

    Zitat von autoiter

    Eigentlich sollte die UDF das schon erledigen.

    Dafür ist wenigstens der Wert 8 im dritten Parameter gedacht. @mitac100 du lässt dir ja den @error-Wert ausgeben. Vielleicht ist der ungleich Null? Wenn ja, dann kannst du prüfen, was der Rückgabewert der Funktion _FileCopyEx dir sagen möchte.

  • Backup Tool - FileCopyEx erstellt keine Ordner

    • mitac100
    • 26. August 2017 um 23:48

    Hallo zusammen,

    das Script funktioniert soweit wunderbar, jedoch werden keine Ordner im Ziellaufwerk erstellt.

    Ich hoffe Ihr könnt mir weiterhelfen.

    Spoiler anzeigen

    ; Fragen zur Datensicherung
    ;_FileCopyEx


    #Include <File.au3>
    #include <Date.au3>
    #include <Misc.au3>
    #include '_FileCopyEx.au3'

    Dim $Quell_Pf_[4][2] ; [n][0] = Pfad; [n][1] = gerundete Größe
    Dim $goOut = 0
    ;Der Start-Wert ist die Zahl des ersten Ordners
    $start = 0

    ;Der Ende-Wert ist die Zahl des letzten Ordners
    $ende = 3

    ;~ ;Datumsoptionen
    ;~ $iWeekday = _DateToDayOfWeek(@YEAR, @MON, @MDAY)
    ;~ $sNewDate = _DateAdd('d', 0, _NowCalcDate())
    ;~ $sNewDate = StringReplace($sNewDate, "/", ".")

    $Quell_LW = @UserProfileDir

    $Quell_Pf_[0][0] = $Quell_LW & '\Desktop'
    $Quell_Pf_[1][0] = $Quell_LW & '\Documents\'
    $Quell_Pf_[2][0] = $Quell_LW & '\Downloads\'
    $Quell_Pf_[3][0] = 'i:\Slike\_00000010\'


    ;Zielpfade anpassen
    $Ziel_LW = "H:\"
    $Ziel_Pf = $Ziel_LW & 'Datensicherung_' & @UserName& '\Drive_C\'


    _check()
    Func _check()
    ;Prüfung Ziellaufwerk vorhanden?
    If FileExists($Ziel_LW) Then ;Prüfung Quellverzeichnisse vorhanden?
    $tmp = 0
    For $i = $start to $ende
    If Not FileExists($Quell_Pf_[$i][0]) Then ;Fenster Quellordner fehlt
    MsgBox(0, "Quellordner fehlt", "Der Ordner " & $Quell_Pf_[$i][0] & " existiert nicht. Bitte kontrollieren")
    $goOut = 1
    Else ;Speicherplatz ermitteln und runden
    $Quell_Pf_[$i][1] = Round((DirGetSize($Quell_Pf_[$i][0])/1024 / 1024), 0)
    $tmp +=($Quell_Pf_[$i][1]) ;Größe zusammenrechnen
    EndIf
    Next

    If $goOut = 1 Then Exit ;Quellordner fehlt, dann Script beenden
    $Ziel_LW_Gr_Ru = Round(DriveSpaceFree($Ziel_LW), 0)

    ;Funktion Größenvergleich der Quellverzeichnisse mit dem Ziellaufwerk
    If $tmp > $Ziel_LW_Gr_Ru Then ;Fenster zu wenig Speicherplatz
    Msgbox(0,"Zu wenig Speicherplatz vorhanden","Geben Sie mindestens " & $tmp - $Ziel_LW_Gr_Ru & " MB Speicherplatz auf " & $Ziel_LW & " frei")
    Exit
    Else ;Alles OK, Start-Info-Fenster einblenden
    ;SplashTextOn("Datensicherung Internet", "Sicherung läuft - Bitte warten", 250, 60, -1, -1, 0)

    ;Alles OK, Datensicherung beginnt
    For $i = $start to $ende

    Global $sSourceDir = $Quell_Pf_[$i][0] ; alle Dateien aus diesem Verzeichnis sollen kopiert werden

    Global $sDestDir = $Ziel_Pf ; die Quelldateien sollen (mit Unterverzeichnissen) in dieses Verzeichnis kopiert werden

    Global $aSourceFiles[1], $aDestDir[1]
    _FileCopyEx_CreateArrays($sSourceDir, $sDestDir, $aSourceFiles, $aDestDir, '*') ; diese Funktion erstellt die Arrays für _FileCopyEx
    If Not @error Then
    Global $sLog = _FileCopyEx($aSourceFiles, $aDestDir, 16 + 8 + 2 + 1, 'Dateien kopieren...') ; hier erfolgt dann das kopieren
    ConsoleWrite('Fehler: ' & @error & @CR)
    ;~ ConsoleWrite($sLog & @CR)
    EndIf
    Next
    EndIf
    EndIf


    EndFunc ;==>_check
    EXIT ;Scrpit beenden

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™