Kopiertool

  • Naja,

    letztlich geht es um die "verheiratung" von den 2 Skripten.

    Aber, alles ist gut.

    Ich hatte mir vorgenommen, selbst da tätig zu werden habe aber auch noch andere Dinge zu tun.

    Wenn ich was eingermaßen Annehmbares habe melde ich mich noch mal.

    Vielen Dank schon einmal und viel Glück bei dem anderen Projekt.

  • Hallo zusammen!

    Würde sich noch einmal jemand die Mühe machen die beiden Scripte nach meinen Vorgaben zu verheiraten?

  • Hallo,

    die GUI und den ersten Teil habe ich in die neue Version übertragen. Was mir noch fehlt ist das implementieren des zweites Scripts:

    Teil Eins:

    Hier Script 2:

    Könnte mir da noch jemand weiterhelfen?

  • Hi kayes !

    die GUI und den ersten Teil habe ich in die neue Version übertragen. Was mir noch fehlt ist das implementieren des zweites Scripts:

    Vorab eine kleine sprachliche Normierung :

    Damit man nicht durch Skript1, Skript2 etc. aneinander vorbeiredet schlage ich vor, dass wir deinen Entwurf SkriptKayes und die andere Variante SkriptZeitriss nennen.

    Auf welches GUI-Design soll es denn nun hinauslaufen ?

    In SkriptKayes (Beitrag #103) hast Du zwar die Listview und die Buttons "Färbung entf." und "Auswahl umkehren" übernommen, aber zu welchem Zweck ? Was soll z.B. "Färbung entf." machen ?

    Ist die Listview dazu gedacht, bestehende Projektnamen anzuzeigen und daraus auszuwählen ?

    In SkriptKayes werden die Pfade ja über das Array :

    Code
    Global $aSourceDest = [["F:\TESTUMGEBUNG\RECHNER1\Daten\", "F:\TESTUMGEBUNG\RECHNER1\Daten\"], _
                           ["F:\TESTUMGEBUNG\RECHNER2\Daten\", "F:\TESTUMGEBUNG\RECHNER2\Daten\"], _
                           ["F:\TESTUMGEBUNG\RECHNER3\Daten\", "F:\TESTUMGEBUNG\RECHNER3\Daten\"], _
                           ["F:\TESTUMGEBUNG\SERVER\Daten\Dokumente\", "F:\TESTUMGEBUNG\SERVER\Daten\Dokumente\Aussendienst\"]]

    festgelegt.

    Der Pfeil, also der Button "=>" (hier muss natürlich auch "<=" rein) , bestimmt, ob von einem per Radiobutton gewählten Rechner auf den Server oder umgekehrt kopiert wird (z.Zt. noch funktionslos).

    Der Projektname wird vom User eingegeben und mit Jahreszahl etc. vervollständigt. Vorher hattest Du zwei Eingabefelder - jetzt nur noch eins. Der Projektname ist demnach auf dem Server und den Rechnern identisch, korrekt ?

    Bevor also irgendwelcher Code produziert wird, sollte erst mal das gewünschte Design sauber ausarbeitet werden.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Hallo Musashi,

    Es soll das GUI Design von SkriptKayes übernommen werden.

    d. h. der Pfeil <= wird ersetzt durch das Listview.

    Das SkriptZeitriss liest den Inhalt eines bestimmten Ordners aus. Jedes Projekt hat eine Checkbox die angehakt werden kann.

    Grundlage für Quelle und Ziel ist der Inhalt einer ini-Datei. Diese ini wird ersetzt durch das Array aus SkriptKayes. Über die Radios soll der entsprechende Quellordner für die Liste eingestellt werden.

    Der Zielordener bleibt für alle 3 Aussendienstrechner gleich.

    Die Buttons "Auswahl umkehren", "Aktualisieren" und "Kopieren" erklären sich selbst.

    Beim kopieren erfolgt eine Kontrolle, der Projektname erscheint grün für erfolgreiches kopieren und rot bei fehlgeschlagen. Diese Einfärbung kann über Färbung ent. wieder auf schwarz gesetzt werden.

    Unser bisheriges Skript ist für das Kopieren SERVER auf RECHNERx verantwortlich.

    Das SkriptZeitriss war bisher für das Kopieren RECHNERx auf SERVER verantwortlich und ersetzt damit den 2. Pfeil.

    Ich hoffe, ich habe etwas Licht ins Dunkle gebracht.

  • Ich hoffe, ich habe etwas Licht ins Dunkle gebracht.

    Nun ja, wie man es nimmt :P.

    Ich habe eine Konversation aufgemacht, wo wir die Details noch mal genauer klären können.

    Das Ergebnis (sofern zufriedenstellend) wird dann natürlich wieder hier im Thread gepostet, damit auch andere etwas davon haben.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Guten Abend zusammen!

    Das Script aus diesem Thread leistet mittlerweile gute Dienste.

    Ich habe ihm nun ein weiteres Extra hinzugefügt.

    Manchmal machen wir Fotos und spielen sie in den Bereich unter Berechnungen. Diese Fotos sollen nicht in den Aussendienstbereich verschoben werden, sondern in den echten Datenbereich.

    Dieser Teil funktioniert zum Teil auch schon. Was nicht funktioniert ist folgendes: Bilder werden verschoben, Daten in den richtigen Ordner kopiert, aber dann beendet sich das Script und wartet nicht auf weitere Eingaben.

    Zweiter Fehler: Beim auswählen von Nein werden die Daten kopiert und die Fotos nicht verschoben, aber auch hier beendet sich das Script.

    Hat jemand eine Idee?

  • Dazu kann ich selber nichts sagen aber ein anderer "Logikfehler" ist bei dir zu finden (meiner Meinung nach):

    In der Kopierfunktion "Func copydown()" scheibst du folgendes:

    Code
    Local $CopySuccess
      $CopySuccess = DirCopy(($source & $jjjjdown & "\" & $prodown & "\Berechnungen"), ($dest & $jjjjdown & "\" & $prodown & "\Berechnungen"), $FC_OVERWRITE)
      DirCopy(($source & $jjjjdown & "\" & $prodown & "\Katasterunterlagen\Risse"), ($dest & $jjjjdown & "\" & $prodown & "\Katasterunterlagen\Risse"), $FC_OVERWRITE)
      ConsoleWrite('< DirCopy = ' & $CopySuccess & @CRLF)
      If Not $CopySuccess Then
        MsgBox(16, "Ergebnis von DirCopy : ", "Die Kopieraktion ist fehlgeschlagen ! ")
      Else
        MsgBox(64, "Ergebnis von DirCopy : ", "Die Kopieraktion war erfolgreich ! ")
      EndIf

    Du prüfst ob das kopieren erfolgreich war, Das gilt aber nur für den ERSTEN Kopiervorgang. Ob der Zweite erfolgreich war, weißt du nicht! Mein Vorschlag (basierend darauf, das DirCopy bei Erfolg als Wert "1" zurück gibt und bei Fehlschlag "0"):

    Code
    Local $CopySuccess
      $CopySuccess = DirCopy(($source & $jjjjdown & "\" & $prodown & "\Berechnungen"), ($dest & $jjjjdown & "\" & $prodown & "\Berechnungen"), $FC_OVERWRITE)
      $CopySuccess = $CopySuccess + DirCopy(($source & $jjjjdown & "\" & $prodown & "\Katasterunterlagen\Risse"), ($dest & $jjjjdown & "\" & $prodown & "\Katasterunterlagen\Risse"), $FC_OVERWRITE)
      ConsoleWrite('< DirCopy = ' & $CopySuccess & @CRLF)
      If $CopySuccess <> 2 Then
        MsgBox(16, "Ergebnis von DirCopy : ", "Die Kopieraktion ist fehlgeschlagen! " & $CopySuccess & "/2") ;Ggf. noch einfügen: & " Kopierfehler: " & @error
      Else
        MsgBox(64, "Ergebnis von DirCopy : ", "Die Kopieraktion war erfolgreich ! ")
      EndIf

    Danach solltest du sicher sein, das beide oder maximal ein Kopiervorgang erfolgreich war.

    2 Mal editiert, zuletzt von Moombas (7. Juni 2019 um 08:54)

  • Local $CopySuccess
    $CopySuccess = DirCopy(($source & $jjjjdown & "\" & $prodown & "\Berechnungen"), ($dest & $jjjjdown & "\" & $prodown & "\Berechnungen"), $FC_OVERWRITE)
    $CopySuccess = $CopySuccess + DirCopy(($source & $jjjjdown & "\" & $prodown & "\Katasterunterlagen\Risse"), ($dest & $jjjjdown & "\" & $prodown & "\Katasterunterlagen\Risse"), $FC_OVERWRITE)

    Das kannst du auch so schreiben:

    Code
    Local $CopySuccess = DirCopy(($source & $jjjjdown & "\" & $prodown & "\Berechnungen"), ($dest & $jjjjdown & "\" & $prodown & "\Berechnungen"), $FC_OVERWRITE)
    $CopySuccess += DirCopy(($source & $jjjjdown & "\" & $prodown & "\Katasterunterlagen\Risse"), ($dest & $jjjjdown & "\" & $prodown & "\Katasterunterlagen\Risse"), $FC_OVERWRITE)

    Oder so:

    Code
    Local $CopySuccess _
        = DirCopy(($source & $jjjjdown & "\" & $prodown & "\Berechnungen"), ($dest & $jjjjdown & "\" & $prodown & "\Berechnungen"), $FC_OVERWRITE) _
        + DirCopy(($source & $jjjjdown & "\" & $prodown & "\Katasterunterlagen\Risse"), ($dest & $jjjjdown & "\" & $prodown & "\Katasterunterlagen\Risse"), $FC_OVERWRITE)
  • Oder so:

    Code
    If Not DirCopy(($source & $jjjjdown & "\" & $prodown & "\Berechnungen"), ($dest & $jjjjdown & "\" & $prodown & "\Berechnungen"), $FC_OVERWRITE) or Not DirCopy(($source & $jjjjdown & "\" & $prodown & "\Katasterunterlagen\Risse"), ($dest & $jjjjdown & "\" & $prodown & "\Katasterunterlagen\Risse"), $FC_OVERWRITE) Then ;...
  • @TE hast du deinen Fehler mittlerweile gefunden? Ich glaube das ein Fehler hier liegt:

    Code
    Switch $tmp
            Case 6 ; JA, verschieben der jpgs
                 FileMove(($source & $jjjjup & "\" & $proup & "\Berechnungen\*.jpg"), ("F:\TESTUMGEBUNG\SERVER\Daten\Dokumente\" & $jjjjup & "\" & $proup & "\Fotos\"), $FC_OVERWRITE + $FC_CREATEPATH)
                 copyup()
            Case 7
                 copyup();NEIN, kein verschieben, Daten werden komplett verschoben in AD Ordner
    
            Case 2 ; CANCEL, Programmabbruch
                 Exit  ;Warum schließt du das ganze Programm an dieser Stelle? Im Prinzip müsstest du dir Case 2 sparen können (Cancel = keine Aktion, das Programm bleibt aber offen)
        EndSwitch

    Wo ich mir nun nicht sicher bin: Löst das "Schließen" der MsgBox das $GUI_EVENT_CLOSE aus? Wenn ja, solltest du für das Beenden des Programms einen extra Button einführen der dein Programm beendet und

    Code
    Case $GUI_EVENT_CLOSE
         Exit

    entfernen.

    Einmal editiert, zuletzt von Moombas (14. Juni 2019 um 11:41)