1. #1
    Avatar von DotNet
    Registriert seit
    10.06.2015
    Beiträge
    661
    Thanked 316 Times in 185 Posts

    Standard Dateien auf Änderungen überwachen und in Ordner kopieren

    Ich arbeite an einem Projekt, das aus mehreren Teilen wie Plugins und Themes besteht. Das CMS verwaltet diese Dateien in verschiedenen Ordnern. Es gehört aber alles zum gleichen Projekt. Damit ich in der Versionsverwaltung nicht immer zwischen 99 Projekten wechseln muss, habe ich ein Repository erstellt, dass jeweils die Komponenten als Unterordnet verwaltet:
    Code:
    Dev-Repo
    -- Plugins
    ---- Plugin A
    ---- Plugin B
    -- Themes
    ---- Theme X
    Dieser Ordner wird getrennt vom CMS gespeichert, damit ich dessen Dateien nicht in der SVN habe. Um die Software zu testen, kopiere ich sie mittels xcopy auf einen lokalen Testserver. Da ich die Verzeichnisstruktur gleich wie im CMS aufgebaut habe, genügt eine Zeile:
    Code:
    xcopy Dev-Repo C:\xampp\htdocs\project /S /d /Y
    Es nervt aber, bei jeder kleinen Änderung von Hand diese Batchdatei starten zu müssen. Da es scheinbar keine Möglichkeit gibt, mit Batch auf Dateiänderungen zu reagieren, habe ich mir als Workaround eine Endlosschleife überlegt:
    Code:
    :copy
    xcopy Dev-Repo C:\xampp\htdocs\project /S /d /Y 
    Timeout 1
    goto copy
    So habe ich meine Änderungen in Echtzeit auf dem Apache. Die Lösung funktioniert, aber gefällt mir nicht optimal. Sie erzeugt unnötig CPU Last (ca 10%) und IO. Es hält sich zwar in Grenzen, doch mir wäre eine Art EventWatcher lieber, der auf Änderungen an der Datei reagiert und sie automatisch rüberkopiert, ohne Polling. Gibt es da was in der Richtung? Ich denke mit der Powershell wäre das über .NET zu realisieren. Bei der PS stört mich, dass man die Skripte nicht per Doppelklick starten kann, sondern man immer erst die Richtlinie ändern bzw. den Inhalt in der ISE einfügen muss. Auch möchte ich nicht zu viel Zeit in dieses Problem investieren.

    Im Krieg gibt es keine Gewinner, nur Verlierer!

  2. #2
    Avatar von ewasp
    Registriert seit
    06.01.2013
    Beiträge
    304
    Thanked 115 Times in 94 Posts

    Standard AW: Dateien auf Änderungen überwachen und in Ordner kopieren

    Du kannst den Ordner mit dem FSRM (FileServerRessourcenManager) überwachen. Mit FSRM kann jegliche Veränderung überwacht werden und dann eine entsprechende Aktion durchgeführt werden. Hierfür ist aber ein Serverbetriebssystem erforderlich. Was aber auch machbar ist wäre eine Synchronisation von 2 Verzeichnissen mit Hilfe von FreeFileSync. Wenn du die Dateien im Ursprungsordner änderst werden die Änderungen automatisch im Zielordner angepasst. Das entsprechende Programm über eine Aufgabe in der Aufgabensteuerung im Intervall (alle 30 Sec oder alle 2 Min) starten. Noch besser ist PureSync, der reagiert auf Änderungen an den Ursprungsdateien und führt die Synchronisation direkt durch.
    Auch in einem Berg voller Scherben, kann man ein Muster erkennen.

  3. The Following User Says Thank You to ewasp For This Useful Post:

    DotNet (16.10.2016)

  4. #3

    Registriert seit
    03.09.2015
    Beiträge
    135
    Thanked 55 Times in 40 Posts

    Standard AW: Dateien auf Änderungen überwachen und in Ordner kopieren

    Zitat Zitat von DotNet Beitrag anzeigen
    Ich denke mit der Powershell wäre das über .NET zu realisieren.
    .NET bietet ein Steuerelement namens "FileSystemWatcher", mit dem du das Quellverzeichnis überwachen kannst. Beim Aufruf vom OnChanged-Event könntest du dann die Dateien ins Zielverzeichnis verschieben.

    FileSystemWatcher watcher;

    private void watch()
    {
    watcher = new FileSystemWatcher();
    watcher.Path = path;
    watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
    | NotifyFilters.FileName | NotifyFilters.DirectoryName;
    watcher.Filter = "*.*";
    watcher.Changed += new FileSystemEventHandler(OnChanged);
    watcher.EnableRaisingEvents = true;
    }

    private void OnChanged(object source, FileSystemEventArgs e)
    {
    //Copies file to another directory.
    }
    Mfg

    .\

  5. The Following User Says Thank You to Negok For This Useful Post:

    DotNet (16.10.2016)

Ähnliche Themen

  1. Ordner/Dateien Duplikate finden und löschen
    Von Quasar im Forum Windows
    Antworten: 7
    Letzter Beitrag: 28.02.2015, 16:45
  2. Win7 Dateien ohne Eigenschaft kopieren?
    Von Gast78236 im Forum Windows
    Antworten: 3
    Letzter Beitrag: 11.07.2014, 09:35
  3. VB.Net Datei in ausgewählten Ordner kopieren
    Von Mobilitas im Forum .Net
    Antworten: 1
    Letzter Beitrag: 12.02.2012, 14:59
  4. Ordner mit .class Dateien zu einer .jar
    Von DreisT im Forum Java
    Antworten: 3
    Letzter Beitrag: 22.11.2011, 19:45
  5. Dateien im /var/ Ordner öffnen
    Von Comu im Forum Skriptsprachen
    Antworten: 6
    Letzter Beitrag: 27.06.2011, 17:54
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.