Blue Flower

Lokalen Ordner am PC anpassen (verschieben)

Um den Ordner einfach nur zu verschieben muss über die Einstellungen der lokale Ordner verschoben werden. Rechte Maustaste auf das Icon im Systemtray klicken, Einstellungen auswählen, zum Register Syncronisation wechseln und oben über den Button verschieben den neuen Speicherplatz im Dateisystem auswählen. Herbei kann nur der übergeordnete Ordner ausgewählt werden. Der Ordner MagentaCLOUD wird dann dorthin verschoben. Es bleib aber als Name für den Sicherungsorder immer MagentaCLOUD.
Die MagentaCloud.App legt für jeden Benutzer in seinem USERPROFILE Ordner den Speicherplatz für den Datenaustausch an.
z.B. c:\Users\[USERNAME]\MagentaCLOUD. (Über den Windows-Explorer wird der Ordner user erst einmal als Benutzer angezeigt)

 

Eigenen lokalen Ordner am PC festlegen (nicht "MagentaCLOUD" als Namen für den Sicherungsordner)

Der Sicherungs-Ordner muss via DB Browser for SQLite Portable angepasst werden, da die Daten in einer SQLite Datenbank gepeichert sind.

1.) DB Browser for SQLite Portable herunterladen entpacken und starten.
2.) Folgende Datenbank-Datei öffnen: %LOCALAPPDATA%\MagentaCLOUD\Data\user.db (Aufruf mit Systemvariablen)
3.) Auf Register "Daten durchsuchen" wechseln und folgende Einträge der Felder "DownloadsFolderPath" und "SyncFolderPath" auf die gewünschten Pfade anpassen.
z.B:Inhalt des Feldes DownloadsFolderPath von "c:\Users\[user]\MagentaCLOUD\.cache" nach "d:\daten\.cache" und Inhalt des
Feldes SyncFolderPath "c:\Users\[user]\MagentaCLOUD" nach "d:\daten"
4.) Den kompletten Inhalt des alten Ordners in den neuen kopieren!
Wird diese Methode verwendet sollte im Skript
db manager sqlite

Mehrere Benutzerkonten verwenden

Wenn ohne jedes mal Benutzerdaten eingeben zu müssen mehrere Benuzterkonten verwendet werden sollen müssen ein paar Schritte erledigt werden.
Es können aber nicht meherere Clound-Zugänge zur selben Zeit verwendet werden. Leider nur nach einander. Per Script ist das recht einfach zu erledigen (s.U.).

Folgendes muss dabei beachtet und nacheinander erledigt werden.

1. MagentaCloud.App starten und die Zugangsdaten für den 1. Account eingeben.
2. Order wie oben beschriebenen  anpassen.
3. MagentaCloud.App  schließen und eine Kopie des Ordners anlegen "c:\Users\[USERNAME]\AppData\Local\MagentaCLOUD"
    z.B. "c:\Users\[USERNAME]\AppData\Local\MagentaCLOUD_Account_1"
   und danach den kompletten Inhalt in den 2. Ordner verschieben.
4. MagentaCloud.App erneut starten und die Zugangsdaten für den 2. Account eingeben.
5. Punkt 2 und 3 wiederholen. (Der 3. Ordner sollte z.B. mit "_Account_2" enden)
explorer magentaclound accounts

 6. Ein WSH-Script welches das Programm x mal startet mit unterschiedlichen Einstellungen

MagentaClound_Backup_auf_mehere_Konten.bat

cscript.exe /nologo MagentaClound_Backup_auf_mehere_Konten.wsh

 
MagentaClound_Backup_auf_mehere_Konten.wsh

Option Explicit
'--------------------------------------------------
' Version 1.0
' Mit diesem Script können beliebig viele MagentaClound Zugänge verwendet werden.
' Aber immer nur nacheinander und nicht zur selben Zeit.
' Das Script prüft ob die MagentaClound.App läuft und beendet diese wenn keine Daten mehr sycronisiert werden.
' Danach werden die einzelnen Konten nach einander aufgerufen
'--------------------------------------------------

Dim oWsh, oFS, oWmi, oSel, oO, oFF, oProcess, sPF, sPF86, sPFDim, iWartezeit, closeApps, CPUuse,closeWindowsExplorerFolder
Dim i, j, p, k, iMagentaClound, sMagentaClound, sMagentaCloudLocalAppData, sCMD, sTmp, arrAccountFolders
Const cAppMagentaClound = "MagentaCloud.App.exe"  ' Hier des Dateinamen des Clound-Programms eintragen
Const cSpace = " ", cDQ = """", cSQ = "'", cCopy = "XCOPY /Y /V /H /S "

' ------------------------------------------------------------------ 
' --- Script-Einstellungen -----------------------------------------
' ------------------------------------------------------------------ 
' Hier werden die Ordnernamen-Erweiterungen eingetragen für die jeweiligen Accounts
' Der Eintrag kann absolut sein, also mit ganzen Pfad
' oder 
' wenn sie gleichen Appdata\local liegen nur den Appendix
' z.B. "c:\Users\[USER]\AppData\Local\MagentaCLOUD_account_1"
arrAccountFolders = Array("_Account_1", "_Account_2") 

' Sollte eine bestimmte MagentaClound-Verbidnung dauerhaft aktiv sein dann diese als letze in arrAccountFolders eintragen und cCloseApp auf False setzen 
Const cCloseApp = False 

' Soll der PC nach der Sicherung heruntergefahren werden 
Const cfShuddown = False  

' MagetaCoud.App öffnen beim Start den lokalen Syn-Ornder. Das Script kann die lokalen Sync-Ordner nicht auslesen daher können diese angegeben werden.
' Der original-Ordner-Name "MagentaCLOUD" muss nicht eingegtragen werden 
closeWindowsExplorerFolder = Array("")

' Programme schließen, welche Dateien beim öffnen sperren (Komma getrennt) z.B. "outlook.exe"
closeApps = Array("outlook.exe")

' ------------------------------------------------------------------ 
' --- Parameter vorbelegen -----------------------------------------
' ------------------------------------------------------------------ 
Set oWsh = CreateObject("WScript.Shell")
Set oFS  = CreateObject("Scripting.FileSystemObject")
Set oWmi = GetObject("winmgmts:\\.\root\cimv2")
sCMD = oWsh.ExpandEnvironmentStrings("%COMSPEC%") & " /C "
sPF86 = oWsh.ExpandEnvironmentStrings("%ProgramFiles(x86)%") 
sPF = oWsh.ExpandEnvironmentStrings("%ProgramFiles%")
sMagentaCloudLocalAppData = oWsh.ExpandEnvironmentStrings("%LOCALAPPDATA%") & "\MagentaCloud"
sMagentaClound = wrap(sPF86 & "\Telekom\MagentaCloud\" & cAppMagentaClound, cDQ, False) '"C:\Program Files (x86)\Telekom\MagentaCloud\MagentaCloud.App.exe"

' ------------------------------------------------------------------ 
' --- Funktionen ---------------------------------------------------
' ------------------------------------------------------------------ 
' Prozell-ID auslesen und ggf. das Programm beenden
Function get_pid(programm, fkill)
  get_pid = 0
  If IsObject(oWmi) Then
    'On Error Resume Next
    Set oSel = oWmi.ExecQuery ("Select * from Win32_Process Where Name = '" & programm & cSQ )
    For Each oO In oSel          
      get_pid = oO.ProcessId 'True 'oO.processID
      If fkill Then oO.Terminate      
    Next    
  End If     
End Function

' Bei Leezeichen die Zeichenkette einpacken
Function wrap(v, sWrap, fForce)
  Dim va, s
  va = v
  If va <> vbNullString Then    
    If InStr(1, va, cSpace, vbTextCompare) Or fForce Then va = sWrap & va & sWrap
  End If
  wrap = va
End Function

' Soll eine Anwendung geschlossen werden
Function closeApplication()
  Dim obj, s, i, j, k
  'Sanftes Schließen der Anwendung hier z.B. Outlook  
  j = ubound(closeApps)
  If j < 0 Then Exit Function
  'If closeApps(0) = vbNullString Then Exit Function
  On Error Resume Next
  For i = 0 To j
    Set obj = Nothing
    s = closeApps(i)
    Select Case LCase(s)
      Case "outlook", "outlook.exe" 'Alles weiteren Produkte von Office öffnen nicht sperrend
        Set obj = GetObject(, "Outlook.Application")
        If Not obj Is Nothing Then
          j = obj.Inspectors.count
          For k = 1 To j
            obj.Inspectors.Item(k).close 0 'olSave
            WScript.Sleep 500
          Next
          obj.Quit
          Set obj = Nothing
          WScript.Sleep 500          
        Else
          Err.Clear
        End If
    End Select    
  Next
  j = UBound(closeApps)
  For i = 0 To j    
    If closeApps(i) = "outlook" Then
      s = "outlook.exe"
    ElseIf Right(closeApps(i), 4) = ".exe" Then
      s = closeApps(i)
    Else
      s = vbNullString
    End If
    If s <> vbNullString Then      
      k =  get_pid(s, True)      
    End If
  Next 
End Function

' Diese Funktion prüft 4 x hintereinander ob die Anwendung CPU-Zeit in Anspruch nimmt
Function CPUUSage(sAppName)
  Dim N1, D1, N2, D2, k, s, x
  Dim oProcess, oSelA, oSelID  
  Const cS = "Select * from Win32_PerfRawData_PerfProc_Process where IDProcess = "
  On Error Resume Next
  s = "Select * from Win32_Process where Name = " & wrap(sAppName, cSQ, True)
  Set oSelA = oWmi.ExecQuery(s)
  For k = 1 To 4
    For each oProcess in oSelA
      s = cS & wrap(oProcess.Handle, cSQ, True)
      For Each oSelID in oWmi.ExecQuery(s)
        N1 = oSelID.PercentProcessorTime
        D1 = oSelID.TimeStamp_Sys100NS
        Exit For
      Next
      WScript.Sleep 2000 
      For Each oSelID in oWmi.ExecQuery(s)
        N2 = oSelID.PercentProcessorTime
        D2 = oSelID.TimeStamp_Sys100NS
        Exit For
      Next    
      x = x + Round((N2 - N1) / (D2 - D1) * 100, 4)
    Next
    WScript.Sleep 1000
    CPUUSage = CPUUSage + x
  Next  
  Set oSelA = Nothing
End Function 


' ------------------------------------------------------------------ 
' --- Programmteil -------------------------------------------------
' ------------------------------------------------------------------ 
' Ist MagentaCLOUD schon gestartet? Wenn ja schießen.

iMagentaClound = get_pid(cAppMagentaClound, false)
If iMagentaClound <> 0 Then
   ' MagentaClound läuft gerade und es ist nicht klar welcher Account gerade aktiv ist
  ' Das Script wartet jetzt so lange bist die MagentaClound.App keine Aktivät zeigt. Somit müsste der Datenausgleich beendet sein.
  Do    
  Loop Until CPUUSage(cAppMagentaClound) = 0
  
  iMagentaClound = get_pid(cAppMagentaClound, True)         
End If

closeApplication
  
j = UBound(arrAccountFolders)
'Nach und nach die Accounts durchlaufen
For i = 0 To j

  Set oFF = oFS.GetFolder(sMagentaCloudLocalAppData)  
  ' Ordner löschen mit den Zugangsdaten für MagentaCloud
  For Each oO In oFF.SubFolders
   oO.Delete
  Next
  Set oFF = Nothing
  If InStr(1,  arrAccountFolders(i), ":") Then
    sTmp = sCMD & cCopy & wrap(arrAccountFolders(i) & "\*", cDQ, False) & cSpace & wrap(sMagentaCloudLocalAppData, cDQ, False)
  Else
    sTmp = sCMD & cCopy & wrap(sMagentaCloudLocalAppData & arrAccountFolders(i) & "\*", cDQ, False) & cSpace & wrap(sMagentaCloudLocalAppData, cDQ, False)
  End If
  k = oWsh.Run(sTmp, 0, True)
  If k = 0 Then
    oWsh.Run sMagentaClound
    Do
    Loop Until CPUUSage(cAppMagentaClound) = 0   
  End If
  'MagentaClound.app abschießen  
  If cCloseApp Or i < j Then 
    iMagentaClound = get_pid(cAppMagentaClound, True)
  End If     
  WScript.Sleep 5000 
Next

' Die von MagentaCloudn.app geöffneten Fentser wieder schließen
j = UBound(closeWindowsExplorerFolder)
For i = 0 To j
  If oWsh.AppActivate(closeWindowsExplorerFolder(i)) Then 
    oWsh.sendkeys "%{F4}~" 
    WScript.Sleep 250
  End if
Next
If oWsh.AppActivate("MagentaCLOUD") Then oWsh.sendkeys "%{F4}~"
'oWsh.Popup "Sicherung abgeschlossen", 10, "" , vbOK 
If cfShuddown Then 
  'If oWsh.Popup("Windows herunterfahren ?", 30, "", vbYesNo + vbDefaultButton1) = vbYes Then
    oWsh.Run "shutdown.exe  /p /f", 0, False
  'End If
End If
Set oWsh = Nothing
Set oFS  = Nothing
Set oWmi = Nothing

Anmerkung: Mit GoogleDrive ist dies nicht notwendig da es erlaubt ist mehrere Verbindungen gleichzeitig zu halten.