Inhalt einer Datei löschen, etc.

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Guest's Avatar

    Inhalt einer Datei löschen, etc.

    Hallo,

    ich habe ein Skript geschrieben und möchte noch einiges hinzufügen, nun weiß ich aber leider nicht genau, wie ich meine Aufforderung richtig in das Skript einfügen soll. Vielleicht kann mir ja jm. von euch dabei helfen.

    Es geht um folgendes:
    Zum einen möchte ich, dass der Zielordner vor jeder neuen Synchronisation gelöscht werden soll. Ich muss den Befehl "delete" benutzen, weiß aber nicht genau, wie ich den Pfad dazu eingeben soll. Muss ich meinen Pfad anschließend nur in Anführungszeichen setzen?

    Dann habe ich noch eine kleine weitere Frage:
    Wie kann ich es einstellen, dass die linke Seite nicht verändert werden darf?

    Vielen Dank.
    Gruß Lisa.
  • chrroe
    Pooh-Bah
    • Oct 2007
    • 588

    #2
    Re: Inhalt einer Datei löschen, etc.

    Hi Lisa!

    ich habe ein Skript geschrieben und möchte noch einiges hinzufügen
    Nun, da wäre es hilfreich, wenn du uns den Inhalt des Skripts mit in dein Posting aufgenommen hättest. Dann wüssten wir, an welcher Stelle du bereits angelangt bist.

    Zum einen möchte ich, dass der Zielordner vor jeder neuen Synchronisation gelöscht werden soll. Ich muss den Befehl "delete" benutzen, weiß aber nicht genau, wie ich den Pfad dazu eingeben soll.
    Die Syntax vom "delete" Befehl ist ja im BC-Helpfile beschrieben:

    DELETE

    Anwendung:
    delete [recyclebin=(yes|no)] (lt|rt|all)

    Löscht die aktuell ausgewählten Dateien/Ordner auf der oder den angegebenen Seite(n).

    Das bedeutet folgendes:
    Du gibst das zu löschende Objekt nicht direkt beim "delete" Befehl an, sondern musst ihn vorher mittels "load", "expand" und "select" bestimmen.
    Mit "delete rt" löscht du dann alle ausgewählten Objekte auf der rechten Seite.

    Wie kann ich es einstellen, dass die linke Seite nicht verändert werden darf?
    Da gibt es zwei Möglichkeiten:

    1. Du schreibst dein Skript so, dass es aufgrund der eingesetzten Befehle ausgeschlossen ist, dass die linke Seite verändert wird.

    2. Du erstellst dir vorher in der Oberfläche von BC eine Sitzung, die du dann im Sitzungmanager abspeicherst und im Skript mittels "load" Befehl lädst. Im Sitzungsmanager der Oberfläche kann man vorher für jede Seite einen Schreibschutz einstellen.
    (Wobei ich zugeben muss, dass ich das in der geschilderten Konstellation noch nicht ausprobiert habe)


    Wie gesagt:

    Am besten postest du hier mal dein bisheriges Skript zusammen mit einer Beschreibung, was genau erreicht werden soll. Dann können wir dir sicher helfen, eine optimale Lösung zu finden


    Bye
    Christoph

    Comment

    • Guest's Avatar

      #3
      Re: Inhalt einer Datei löschen, etc.

      Hier mein angefertigtes Skript:

      Hab mittlerweile noch andere Fehler festgestellt, LEIDER und weiß auch nicht, wie ich sie beheben muss. Eigenlich wollte ich, dass nur veränderte Daten kopiert werden sollen, aber nun kopiert er mirdoch alle. Langsam verzweifel ich...


      SKRIPT:

      load "\\x\x" "\\y\y\y\"

      criteria [timestamp] \ [size] \ [CRS] \ [binary] \ [rules-based] \

      expand all

      select lt.files rt.orphan.folders

      copy lt->rt

      option stop-on-error
      option confirm:yes-to-all

      log normal "C:\Programme\BeyondCompare2\log.txt"

      copyto lt path:base "C:\copy"


      Vielen Dank schon mal an Christoph.

      Comment

      • chrroe
        Pooh-Bah
        • Oct 2007
        • 588

        #4
        Re: Inhalt einer Datei löschen, etc.

        Hi Lisa!

        Dein bisheriges Skript sieht leider ein wenig nach Kraut und Rüben aus.
        Aber lass dich nicht von der Technik entmutigen. Mit Logik, Geduld und Ausprobieren kriegen wir das sicher hin.

        Vorweg aber noch ein paar generelle Hinweise von mir:
        Als erstes solltest du dir genau im Klaren darüber sein, welche Aufgabe du mit BC auf welche Weise erledigen möchtest. Das kann ich nämlich aus deinen bisherigen Postings noch nicht erschöpfend erkennen.
        Dies solltest du genau formulieren können.

        Wenn das erledigt ist, solltest du probieren, diese Aufgabe zuerst mal ohne Skript, sondern manuell in der Oberfläche von BC zu erreichen.
        Sobald das erstmal zuverlässig klappt, kannst du dabeigehen, und ein entsprechendes Skript erstellen.

        Dieses Vorgehen empfehle ich deshalb, weil die Skriptsprache von BC leider nicht ganz selbsterklärend ist.

        Als Tipp für die Praxis kann ich auch nur raten, zu jedem Kommando im BC-Skript mittels einer Kommentarzeile zu notieren, was der Befehl bewirkt bzw. bewirken soll.
        Das hilft ungemein wenn man selber oder jemand anders das Skript anschauen soll.


        Bye
        Christoph

        Comment

        • Guest's Avatar

          #5
          Re: Inhalt einer Datei löschen, etc.

          Hallo,

          also ich hatte vor in das Skript zu schreiben:

          1. er soll die beiden Ordner laden
          2. die Kriterien mit denen er kopieren soll (er soll alles kopieren, was anders ist, also Zeit, Größe etc.)
          3. er soll von links nach rechts kopieren, wobei links auf keinen Fall verändert werden darf
          4. es soll nicht angehalten werden, also sollen alle Fragen mit ja beantwortet werden
          5. eine kleine log File soll anschließend erstellt werden, wobei es reicht, wenn die Zeit des Vorgangs, die Anzahl der Dateien und welche Ordner er benutzt beschrieben werden
          6. in welchen Ordner er die kopierten Dateien packen soll

          das sollte mein Skript ausdrücken, so wie ich es bis jetzt geschrieben habe...

          so, nun wollte ich ja gerne noch hinzufügen, dass der Inhalt des Zielordners vor dem Kopiervorgang gelöscht werden soll.


          Gruß Lisa.

          Comment

          • chrroe
            Pooh-Bah
            • Oct 2007
            • 588

            #6
            Re: Inhalt einer Datei löschen, etc.

            Hallo Lisa!

            Bitte löse mir erstmal folgenden Widerspruch auf:

            2. die Kriterien mit denen er kopieren soll (er soll alles kopieren, was anders ist, also Zeit, Größe etc.)
            so, nun wollte ich ja gerne noch hinzufügen, dass der Inhalt des Zielordners vor dem Kopiervorgang gelöscht werden soll.
            Also entweder möchtest du nur die Dateien kopieren, die "anders" oder neu sind, oder du nimmst die Holzhammer-Methode, indem du den Zielordner vorher löschst und dann alles von links nach rechts kopierst.

            Beides gleichzeitig zu machen ergibt wenig Sinn.



            Zu deinen Anforderungen:

            1. er soll die beiden Ordner laden

            kein Problem

            2. die Kriterien mit denen er kopieren soll (er soll alles kopieren, was anders ist, also Zeit, Größe etc.)

            Die "Kriterien" bestimmen nicht, womit BC kopiert, sondern wie es die Dateien vergleicht. Hier gibt schnelle aber wage Kriterien (Größe / Zeit), aber auch langsame aber sichere Kriterien (binär, CRC oder regelbasiert).
            Bei Erstellung des Skriptes solltest du schon wissen, was dir wichtiger ist: Geschwindigkeit oder Genauigkeit.

            3. er soll von links nach rechts kopieren, wobei links auf keinen Fall verändert werden darf

            Kein Problem

            4. es soll nicht angehalten werden, also sollen alle Fragen mit ja beantwortet werden

            Auch einstallbar

            5. eine kleine log File soll anschließend erstellt werden, wobei es reicht, wenn die Zeit des Vorgangs, die Anzahl der Dateien und welche Ordner er benutzt beschrieben werden

            Hmm, Zeit des Vorgangs ist machbar, das mit den anderen Statistikdaten ist etwas aufwendiger.
            BC bietet die Möglichkeit, vor dem Kopieren einen Report über die Unterschiede zu erstellen. Das ist dann aber wieder eine neue Baustelle.

            6. in welchen Ordner er die kopierten Dateien packen soll

            BC kopiert gewöhnlich von links nach rechts oder anders rum, je nach dem, welchen Parameter man beim COPY Kommando mitgibt. Welche Ordner das sind, wird ja über das LOAD Kommando festgelegt.
            Mit dem COPYTO Kommando besteht weiterhin die Möglichkeit, die potentiellen Dateien in ein unabhängiges Verzeichnis zu kopieren.



            Nun aber zur Grundfassung eines passenden Rumpf Skriptes:

            Code:
             
            # ausführliches Logfile erstellen
            log verbose c:\bc-protokoll.txt
            
            # Optionen setzen
            option stop-on-error
            option confirm:yes-to-all
            
            # linken und rechten Ursprungsordner laden
            load "\\x\x" "\\y\y\y\"
            
            # Einstellungen für Vergleichskriterien festlegen: Dateidatum und Größe
            criteria timestamp size
            
            # intern alle Ordner aufklappen
            expand all
            
            # Auswählen, mit welchen Dateien und Ordnern gearbeitet werden kann
            select lt.newer.files lt.diff.files lt.orphan
            
            # Kopiert die ausgewählten Dateien/Ordner in die angegebene Richtung
            copy lt->rt
            Evtl. solltest du aber auch mal im BC-Helpfile das SYNC Kommando anschauen, ob das deine Anforderung besser als das COPY Kommando erfüllen kann.


            Bye
            Christoph

            Comment

            Working...