Kopierhilfe

  • Hallo Leute,

    ich habe mir eine kleine bat Datei geschrieben die mir im alltäglichen Leben Kopierarbeit abnimmt.

    Auf meinen Aussendienstrechner nehme ich Projekte mit, die ich im Laufe des Tages bearbeite. Einige bleiben eine längere Zeit auf dem AD Rechner damit ich im Notfall die Daten dabei habe.

    Abends müssen dann die bearbeiteten Projekte auf den Server übertragen werden, damit die Leute im Innendienst sie weiter bearbeiten können.

    Diesen Vorgang möchte ich nun in einer grafisch ansprechenderen Variante haben. Könnt ihr mir dabei helfen?

    Der Ablauf ist folgender:

    - Programmstart
    - das Programm durchsucht einen Standardpfad und es werden die enthaltenen Projekte angezeigt, mit einer Checkbox davor.
    Beispiel (Das O symbolisiert die Checkbox zum anhaken)

    O 15D133
    O 15D336
    O 16D656
    O 17d466
    .
    .
    .
    .
    O alle Projekte

    Schaltfläche kopieren Schaltfläche Beenden


    Ich sehe also die vorhandenen Projekte und kann einzelne oder auch alle anwählen.
    kopieren startet den Vorgang, Beenden beendet das Programm
    wählt man kopieren läuft der Vorgang. Nach Fertigstellung erscheint die Mitteilung Beendet und mit der Schaltfläche OK beendet man das Programm.

    Wie schaut das aus? Ist das machbar und traut sich jemand da ran? ;)

  • Die Frage, die ich zuerst beantworten will ist jene: "traut sich jemand da ran?".
    Ja, Du! Wir springen dann ein, wenn es Probleme gibt.

    Zuerst solltest Du Dir einige Fragen zum Design beantworten. Z.B.:
    Von wievielen Projekten maximal sprichst Du?
    Wenn es mehr sind, als im GUI Platz haben, soll gescrollt oder seitenweise oder um einen festen Wert (z.B. die nächsten 10) geblättert werden?
    Willst Du eine fixe Anzahl an CheckBoxen darstellen oder nur so viel wie Projekte gefunden wurden?
    etc. etc.

  • Ja, Du! Wir springen dann ein, wenn es Probleme gibt.

    Zuerst solltest Du Dir einige Fragen zum Design beantworten. Z.B.:
    Von wievielen Projekten maximal sprichst Du?
    Wenn es mehr sind, als im GUI Platz haben, soll gescrollt oder seitenweise oder um einen festen Wert (z.B. die nächsten 10) geblättert werden?
    Willst Du eine fixe Anzahl an CheckBoxen darstellen oder nur so viel wie Projekte gefunden wurden?
    etc. etc.

    Auch wenn das Skript nicht so kompliziert ist hat er sicherlich nicht ohne Grund den Thread in 'Ohne Gegenleistung' eröffnet oder?

  • Ich schaue eigentlich nur auf den Inhalt eines Themas.
    Aber wenn kayes jemanden sucht, der das für ihn schreibt, dann bin ich draussen.

  • Hab dir mal ein Script geschrieben, hoffe es ist so, wie du meinst :)


    Mfg Kanashius

  • Danke Kanashius,

    ich habe das Script so eingetragen und als Test laufen lassen. Fazit: Super! Nur eine Sache hätte ich da noch:

    Ich hätte gerne einen festen Start- und einen festen Zielordner.


    • Code
      Global $iWidth=800,$iHeight=600,$sStartFolder="E:\Panasonic\Daten\",$sTargetFolder="F:\Daten\Dokumente\Aussendienst\*",$arFileListViewItems[0]

    Diese Anpassung wirft einen Fehler in Zeile 46 auf
    Error: Variable subscript badly formatted

    Weisst du die Ursache?

  • Hallo,

    reicht es die Zeilen 20-22 auszukommentieren?

    Code
    ;~     $iCopyStartButton=GUICtrlCreateButton("Start",$iWidth-155,$iHeight-25,75,20)
    ;~     $iCopyStopButton=GUICtrlCreateButton("Stop",$iWidth-80,$iHeight-25,75,20)
    ;~     GUICtrlSetState($iCopyStopButton,$GUI_DISABLE)
  • Ne, die starten/beenden den Kopiervorgang.

  • Ah, der Fehler taucht auf, weil ich ganze Ordner kopieren will und nicht einzelne Files.
    Im Startordner ist keine einfache Datei vorhanden und dann kommt der Fehler. Sobald eine einzelne Datei im Startordner vorhanden ist funktioniert auch das Script

  • So, habe jetzt auch mal die Gelegenheit mich intensiver mit dem Script zu beschäftigen.

    Austausch von

    Code
    local $arFiles=_FileListToArray($sPath,"*",$FLTA_FILES,true)


    in

    Code
    local $arFiles=_FileListToArray($sPath,"*",$FLTA_FOLDERS,true)


    hat schon einmal bewirkt das jetzt die Ordner wie gewollt angezeigt werden.
    Nur mit dem kopieren habe ich jetzt so meine Schwierigkeiten.
    Aus moveFiles muss jetzt irgendwie DirCopy werden.

  • So, das kopieren der Ordner funktioniert nun.

    Kann man diesen Kopierbefehl noch weiter parametrieren?
    Der Befehl aus der bat lautete:

    Code
    xcopy "\\ABKADPC\Daten\20%projekt%\Dokument-Explorer\Berechnungen\*" "F:\Daten\Dokumente\Aussendienst\%jjjj%\%projekt%\Berechnungen\"


    Der Ablauf ist folgender:

    Morgens nutze ich unsere Büroorganisationssoftware um komplette Aufträge zu exportieren.
    Unter einem Pfad wird nun der Auftrag als Ordner 2017D123 mit dem Unterordner Dokument-Explorer und den darin enthaltenen Unterordnern Berechnungen, Fotos, Unterlagen, Rechnungen, Anträge, Verträge kopiert.
    Ich erfasse den ganzen Tag über Daten in dem Ordner Berechnungen.
    Diesen Ordner importiert unsere Software aber nicht. Bisher haben wir das über copy/paste gelöst bis ich die oben erwähnte bat zur Verfügung hatte.

    Damit wir nicht aus Versehen Daten abends überschreiben, kopieren wir diese Daten in einen Ordner Aussendienst/2017/17d123/Berechnungen
    Dann werden die Orginal Daten geöffnet und die Aussendienst Daten importiert.

    Frage ist nun: Wie passe ich hier das Script an damit ich die gewählten Daten in den richtigen Ordner kopiere?
    Der copyDir Befehl hat nur einige wenige Parameter zur Verfügung. Das Einsortieren in den richtigen Ordner wird schwieriger da wir auch ältere Jahrgänge mit im Boot haben.

    Soweit ich verstanden habe könnte ich den xcopy Befehl auch in AutoIt nutzen, aber wie werden hier die Parameter angepasst für AutoIt?

  • Hallo@'kayes',
    ja man kann xcopy wie alle anderen Konsolenbefehle auch aus AutoIt ausführen. Aber dabei will ich jetzt noch nicht helfen. ^^
    DirCopy hat ja nun nicht sehr viele Parameter. Allerdings schreibt DirCopy standardmäßig nicht in ein vorhandenes Verzeichnis.
    Wenn du das Flag auf 1 setzt, wird auch in das vorhandene Verzeichnis geschrieben: DirCopy ( "source dir", "dest dir" [, flag = 0] ) (also DirCopy ( "source dir", "dest dir", 1 )).
    Allerdings werden gleichnamige Daten auch überschrieben! Wenn das unkritisch ist, weil du immer neue Ordnernamen oder Dateinamen hast, ist das wohl in Ordnung. Ansonsten müsste man anders vorgehen und prüfen. Ich denke aber du hast was du bracuhst - immerhin war xcopy ja auch schon gut genug ;) .

    Grüße autoiter

  • Ja, aber wie baue ich


    so um das ich es in

    funktioniert?

  • Hallo @kayes,

    Da fehlt dir meines Erachtens noch ein Input-Feld in der GUI. Vielleicht "Projektname:" unter dem Inputfeld "Zielordner:" angeben?
    Vorausgesetzt ich habe richtig verstanden, dass alle auf einmal ausgewählten Verzeichnisse den gleichen Projektnamen bekommen, sonst müsste in der Kopier-Schleife die Abfrage kommen.

    Ich habe dein Skript leicht angepasst.
    Bei mir ist es abgestürzt, weil es das Startverzeichnis bei mir nicht gibt. Daher habe ich in die erste Zeile der Funktion _ListFiles eine Prüfung mit Warnhinweis ergänzt.
    Dann habe ich oben erwähntes Control in der GUI ergänzt und den Zielpfad dann in der _MoveDir-Funktion angepasst.
    $iTargetFolder = $iTargetFolder & @YEAR & "\" & $sProject & "\Berechnungen"

    @YEAR ist ein Makro, dass das aktuelle Jahr beinhaltet.
    Hier wird mit & verkettet. Zielpfad ist gleich Zielpfad\aktuellesJahr\Projektname\Berechnungen.

    Spoiler anzeigen

    PS: Die Variablenpräfixe sind ein Horror. Aber dafür kannst du ja nichts..

    Grüße autoiter

  • Hier mal der Ablauf in Bildern:
    Ausschnitt 1: Auswahl der zu kopierenden Verzeichnisse
    Ausschnitt 2: Startpfad (Unterordner Berechnungen der ausgewählten Projekte)
    Ausschnitt 3: Zielpfad (Berechnungen wird in einen Pfad kopiert mit Jahrgang/Projekt
    Vielleicht macht es das klarer:

    https://picload.org/view/rwacpopw/kayes.jpg.html

    und Entschuldigung, wenn ich mich nicht klar verständlich gemacht habe und dir dadurch Mehrarbeit entstanden ist....

    #sorry

    In der bat oben habe ich immer das Project eingegeben, dann abgefragt ob ein neues kopiert werden soll usw...
    In der GUI soll nun eine List angezeigt werden in der ich mehrere Projekte auswähle und die dann in die richtigen Ordner kopiert werden.

    Einmal editiert, zuletzt von kayes (8. August 2017 um 19:01)

  • Also mir ist praktisch noch gar keine Arbeit entstanden. Ich habe ja nur fünf Zeilen oder so ergänzt ^^
    Aber ich bin noch nicht sicher, dass ich das Problem erfasst habe.

    Du möchtest nicht das Projekt angeben, sondern es soll aus dem gewählten Startordner-Pfad extrahiert werden. Das Jahr soll als Ordner im Zielpfad angelegt werden und beim Zielordner für das Projekt soll nicht mehr das Jahr mit vier Ziffern sondern nur noch mit zwei Ziffern angegeben werden?

    Grüße autoiter

  • ja, hast du richtig erfasst.

    Ist kompliziert nicht wahr?

    Bisher wurde so jahrelang agiert. Und das mit copy/paste. Dabei sind hin und wieder auch mal Daten verschütt gegangen, weil man mit dem Start und Ziel mal durcheinander kam.
    Und erst über die bat und jetzt als grafisch ansprechende Oberfläche soll es einfacher und sicherer werden.