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 Synchronisation 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)
Anmerkung: Damit ein Eintrag in der Datenbank zu finden ist muss zumindest ein Abgleich erfolgt sein. Es reicht schon wenn MagentaCloud begonnen hat Daten zu Synchronisieren
Der Sicherungs-Ordner muss via DB Browser for SQLite Portable angepasst werden, da die Daten in einer SQLite Datenbank gespeichert sind.
MagentaCloudApp nur "von Hand" starten
* App mit der rechten Maustaste anklicken und auf Einstellungen gehen. Im Register Allgemein das Häckchen entfernen bei "MagentaClOUD bei Systemstart starten"
* Den Link um die MagentaCloudApp zu starten mit einem Parameter anpassen damit nicht immer der Ordner geöffnet wird
"C:\Program Files (x86)\Telekom\MagentaCloud\MagentaCloud.App.exe" /hideexp
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 mehrere Clound-Zugänge zur selben Zeit verwendet werden. Leider nur nach einander. Per Skript 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)
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_mehrere_Konten.wsh
MagentaClound_Backup_auf_mehrere_Konten.wsh
Option Explicit '-------------------------------------------------- ' Version 1.1 ' Autor: Michael Hölldobler ' Mit diesem Script können beliebig viele MagentaClound Zugänge verwendet werden. ' Aber immer nur nacheinander und nicht zur selben Zeit! ' Das Skript prüft ob die MagentaClound.App läuft und beendet immer wieder diese. ' Die Prüfung erfolgt indirekt durch die CPU Nutzung des Programms. ' Es werden einzelnen Konten nach einander aufgerufen. ' ' Zum Start gibt es also mindestens einen MagentaCLOUD Ordners mit doppeltem Inhalt. ' z.B. MagentaCLOUD & MagentaCLOUD_Account_1 mit den gleichen Daten ' Ist der SQLite ODBC Driver von Christian Werner installiert muss auch beim Start des Skript nicht darauf geachtet werden ob die Kopie aktuell ist. ' http://www.ch-werner.de/sqliteodbc/ ' 64Bit system diese herunterladen und installieren > sqliteodbc_w64.exe ' 32Bit system > sqliteodbc.exe '-------------------------------------------------- Dim oWsh, oFS, oWmi, oSel, oO, oFF, oProcess, sPF, sPF86, sPFDim, iWartezeit, closeApps, CPUuse,closeWindowsExplorerFolder, sLocalApp Dim i, j, p, k, iMagentaClound, sMagentaClound, sMagentaCloudLocalAppData, sCMD, sTmp, sTmp2, arrAccountFolders, iarrAF Const cAppMagentaClound = "MagentaCloud.App.exe" ' Hier des Dateinamen des Clound-Programms eintragen Const cMagentaCLOUD = "MagentaCLOUD" Const cAppMagentaCloundParameter = " /hideexp" ' Mit diesem Startparameter wird kein Explorer-Fenster des MagentaCloud-Ordner geöffnet 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 'arrAccountFolders = Array("d:\meine Daten\MagentaCLOUD\konto_1", "d:\meine Daten\MagentaCLOUD\konto_2") ' ODER ' wenn die Ordner im "LOCALAPPDATA" liegen nur den Appendix eintragen. (z.B. "account_1" nicht "MagentaCLOUD_account_1" 'arrAccountFolders = Array("_account_1", "_account_2") ' ODER ' Kein Eintrag dann durchsucht das Script den "LOCALAPPDATA"-Ordner nach Unterordner welche mit "MagentaCLOUD" im Namen beginnen 'arrAccountFolders = Array() arrAccountFolders = Array("_Account_1", "_Account_2") ' Sollte eine bestimmte MagentaClound-Verbindung dauerhaft aktiv sein dann diese als letzten Eintrag in arrAccountFolders eintragen und cCloseApp auf False setzen. Const cCloseApp = True ' Soll der PC nach der Sicherung heruntergefahren werden Const cfShuddown = False ' Durch den Startparameter für die MagetaCoud.App wird nicht lokale Sycn-Ornder im Explorer geöffnet. ' Sollte doch der Ordner geöffnet werden kann hier der Fenster-Titel eingetragen werden ' "MagentaCLOUD" muss nicht eingetragen 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%") sLocalApp = oWsh.ExpandEnvironmentStrings("%LOCALAPPDATA%") sMagentaCloudLocalAppData = sLocalApp & "\MagentaCloud" sMagentaClound = wrap(sPF86 & "\Telekom\MagentaCloud\" & cAppMagentaClound, cDQ, False) & cAppMagentaCloundParameter '"C:\Program Files (x86)\Telekom\MagentaCloud\MagentaCloud.App.exe" ' ------------------------------------------------------------------ ' --- Funktionen --------------------------------------------------- ' ------------------------------------------------------------------ ' Prozess-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 'je nach Eintrag ob absoluter Pfad oder nur der Anhang Function getMagentaCLOUDPath(sFolder) If InStr(1, sFolder, ":") Then 'absoluter Pfad getMagentaCLOUDPath = sFolder Else getMagentaCLOUDPath = sLocalApp & "\" & sFolder End If End Function 'Inhalt des Ordner leeren Function emptyFolder(sFolder) Set oFF = oFS.GetFolder(sFolder) ' Ordner löschen mit den Zugangsdaten für MagentaCloud For Each oO In oFF.SubFolders oO.Delete Next For Each oO In oFF.Files oO.Delete Next Set oFF = Nothing 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 Function getAccountFolder() Dim oFolder, oSubFolder, i, sTmp i = UBound(arrAccountFolders) If UBound(arrAccountFolders) >= 0 Then ' Es wurden Ordner vorbelegt Else Set oFolder = oFS.GetFolder(sLocalApp) For Each oSubFolder In oFolder.SubFolders If InStr(1, oSubFolder.name, cMagentaCLOUD, vbTextCompare) Then If oSubFolder.name <> cMagentaCLOUD Then i = UBound(arrAccountFolders) ReDim Preserve arrAccountFolders(i+1) arrAccountFolders(i+1) = oSubFolder.name End If End If Next End If End Function Function SQLiteValue(sMagentaCloundFolder) Dim oConn, oRst, sConnection,sSQL, sField, sTmp Set oConn = CreateObject("ADODB.Connection") Set oRst = CreateObject("ADODB.Recordset") On Error Resume Next sConnection = "DRIVER=SQLite3 ODBC Driver;Database=" & wrap(getMagentaCLOUDPath(sMagentaCloundFolder) & "\Data\user.db", "'", False) & ";" 'c:\Users\[USER]\AppData\Local\MagentaCLOUD\Data\user.db oConn.Open sConnection ' OPEN CONNECTION sSQL = "SELECT USER.SyncFolderPath FROM user;" ' OPEN RECORDSET oRst.Open sSQL, oConn sTmp = oRst.Fields(0) ' OUTPUT TO WORKSHEET 'orksheets("results").Range("A1").CopyFromRecordset rst oRst.Close oConn.Close Set oConn = Nothing SQLiteValue = sTmp End Function Function updateFolder sTmp = SQLiteValue(sMagentaCloudLocalAppData) If sTmp <> vbNullString Then 'SQLite ODBC Driver ist installiert For i = 0 To iarrAF sTmp2 = SQLiteValue(getMagentaCLOUDPath(arrAccountFolders(i))) If sTmp = sTmp2 Then sTmp = sMagentaCloudLocalAppData & "\settings.json" sTmp2 = getMagentaCLOUDPath(arrAccountFolders(i)) & "\settings.json" If oFS.GetFile(sTmp).DateLastModified > oFS.GetFile(sTmp2).DateLastModified Then emptyFolder(sLocalApp & "\" & arrAccountFolders(i)) sTmp = sCMD & cCopy & wrap(sMagentaCloudLocalAppData & "\*", cDQ, False) & cSpace & wrap(getMagentaCLOUDPath(arrAccountFolders(i)), cDQ, False) k = oWsh.Run(sTmp, 0, True) End If Exit For End If Next End If End Function Function closeExplorerWindows() Dim i, j ' 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(cMagentaCLOUD) Then oWsh.sendkeys "%{F4}~" 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) 'Magenta Cloud schließen End If closeApplication getAccountFolder iarrAF = UBound(arrAccountFolders) updateFolder ' Nach und nach die Accounts durchlaufen For i = 0 To iarrAF ' Inhalt des original MagentaCLOUD Ordner löschen emptyFolder(sMagentaCloudLocalAppData) sTmp = sCMD & cCopy & wrap(getMagentaCLOUDPath(arrAccountFolders(i)) & "\*", cDQ, False) & cSpace & wrap(sMagentaCloudLocalAppData, cDQ, False) ' Ordner nach MagentaCLOUD kopieren k = oWsh.Run(sTmp, 0, True) If k = 0 Then oWsh.Run sMagentaClound ' Schleife durchlaufen bis die CPU Verwendung dauerhaft 0 ist. Do Loop Until CPUUSage(cAppMagentaClound) = 0 End If ' MagentaClound.app nach dem letzten abgleich abschießen If cCloseApp Or i < iarrAF Then iMagentaClound = get_pid(cAppMagentaClound, True) End If WScript.Sleep 5000 ' Ordner von MagentaCLOUD nach Sicherung kopieren emptyFolder(getMagentaCLOUDPath(arrAccountFolders(i))) sTmp = sCMD & cCopy & wrap(sMagentaCloudLocalAppData & "\*", cDQ, False) & cSpace & wrap(getMagentaCLOUDPath(arrAccountFolders(i)), cDQ, False) k = oWsh.Run(sTmp, 0, True) Next closeExplorerWindows '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.