Hallo,

nachdem ich ich nun durch die trial-and-error Hölle gegangen bin (mit Netzlaufwerken etc. geht es nicht) um Ordner zwischen MAC und Windows in Echtzeit zu synchronisieren möchte ich das Ergebnis hier nun für die Nachwelt festhalten.

Grundvoraussetzungen sind:

1. Die Rechner/Virtuelle Maschinen können sich sehen.

2. Der zu synchronisierende Ordner ist im MacOs freigegeben

3. Der Windows Benutzer hat Schreibrechte auf der MacOs-Freigabe

Diese Beispielanleitung VERSCHIEBT alle Dateien (ohne Ordner) aus einem Windows Ordner SOFORT in einen beliebigen anderen Ordner (in dem Fall auf eine Mac-Freigabe). Möchte man die Dateien nur kopieren, oder sämtliche Ordner mitverschieben/kopieren sind die Parameter von Robocopy anzupassen.

 

Zuerst das eigentliche Script: es überwacht im Hintergrund einen Ordner und  führt bei Änderungen in diesem Ordner einen (oder auch mehrere, dann einfach untereinander schreiben) Befehle durch.

Notepad öffnen. Die noch leere Datei direkt als Robocop.ps1 (auf dem Desktop) speichern und dann folgenden Text hineinkopieren. Die Ordnerpfade für bewegen von und bewegen nach natürlich für den eigenen Bedarf auch angleichen.

$block = {    

    function Do-Something
    {
        Start-Process robocopy.exe "C:\Beispielordner\Unterordner \\Mac\Home\Beispielordner /MOV /XD /NFL /NDL /NJH /NC /NS /NP"
 
    }
 
    $watchedFolder = "C:\Beispielordner\Unterordner"
    $watcher = New-Object System.IO.FileSystemWatcher
    $watcher.Path = $watchedFolder
 
    Register-ObjectEvent -InputObject $watcher -EventName Created -SourceIdentifier File.Created -Action { Do-Something }
}
 
$encodedBlock = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($block))
 
Start-Process PowerShell.exe -verb Runas -argumentlist '-WindowStyle Hidden', '-NoExit', '-EncodedCommand', $encodedBlock
 
 
 
 
Als Zweites muss man die .cmd Datei, welche die ausführenden Rechte für Powershell anschaltet und das Script ausführt (damit es immer im Hintergrund läuft) erstellen.
 
Notepad öffnen. Datei speichern als Robocop-Start.cmd und den unten stehenden Text hineinkopieren.
 
Powershell -Command "Set-ExecutionPolicy -Scope Currentuser Unrestricted -force" 
PowerShell "C:\Robocop.ps1"
 
 
Der letzten Schritte sind
1. Beide erstellte Dateien nach C:\ kopieren.
2. Im Exporer oben in die Leiste shell:startup eingeben und dort eine Verknüpfung zu C:\Robocop-Start.cmd erstellen.
 
 

 

Gefragt von (16.9k Punkte)
Bearbeitet von
+1 Punkt

1 Antwort

Das klingt super. Ganz herzlichen Dank fürs Teilen !!
Beantwortet von (16.1k Punkte)
0 Punkte
8,052 Beiträge
13,445 Antworten
19,231 Kommentare
3,380 Nutzer