Fr_An's RoboGUI (GUI für RoboCopy)

  • Letzte Version
    _______________________________________________________

    Auf Grund

    mectst
    10. Mai 2007 um 12:25

    habe ich die GUI erstellt. Sie hält sich weitestgehend (es fehlt Drivemapping) an Microsofts GUI, welche allerdings .NET 2.0 benötigt.

    Andere Alternativen sind RoboCopyWizard, tmsRobocopy und CopyRiteXP.

    RoboCopyWizard stellt auf französisch Fragen um die Einstellungen vorzunehmen. tmsRoboCopy ist deutschsprachig und bietet auch Auswertefunktionen. Es ist Shareware und erscheint mir unübersichtlich. CopyRiteXP 1.4.0 soll angeblich ab Win2000 laufen, was allerdings daran scheitert, das es das Ressource Kit 2003 heraussetzt.

    Da ich meinen Programmierrechner neu aufsetzen musste und mein Delphiinstallationsarchiv defekt war, habe ich Lazarus verwendet. Lazarus bietet neben ein paar Vorteilen auch Nachteile. So ist das Kompilat ziemlich groß und verschiedene Codeschnipsel aus Delphi funktionieren nicht. Deshalb werde ich das ganze noch nach Delphi übertragen.

    Merkmale:

    • Entsprechend der MS GUI sind die Schalter auf verschiedene Seiten gruppiert. (Kopier-, Filter-, Log- und Anzeigeoptionen)
    • Die Beschreibungen der Schalter befinden sich in den Hints. Sie sind leider noch nicht vollständig übersetzt und in der Hints.ini gespeichert, so dass sie jederzeit angepasst werden können.
    • Es werden bisher so gut wie keine Pausibilitätsprüfungen vorgenommen.
    • Es wird noch nichts gespeichert. Lediglich der aus den Einstellungen erstellte Befehl über den Button "Speichern..."
    • Über den Button "Start" wird Robocopy mit den eingestellten Schaltern gestartet.


    Im Anhang ein paar Bilder.

  • In dem Hilfetext von RoboCopy sind neben den verwendeten Schaltern weitere angegeben:


    Ein Teil davon soll noch Eingang in die GUI finden.

    Anregungen und Tipps sind willkommen. Im Anhang die GUI.

    Anhang: 3x aufgerufen.

    Gruß Frank

  • ui FEINE Sache! :daumen:

    * das mit den Logging funktioniert nicht.
    ------------------------------------------------

    Vorschlag:

    Bevor Du dich mit der commandline rumärgerst, bitte erzeuge einen JOB und dann kann man diesen dann aufrufen. Auch ist dies für eine Spätere Lade funktion einfacher. Auch kann man dann besser Filter, wegen den Ordner'n und Datei(ein) einstellen :)

    test001.RCJ :

    Code
    :::: Robocopy Job C:\TOOL\MICROSOFT ROBOCOPY GUI\TEST001.RCJ:::: Created by katjarella on Sat Jun 16 2007 at 17:30:00:::::: Source Directory :::	/SD:\Doom9\Robocopy\_QUELL\	:: Source Directory.:::: Destination Directory :::	/DD:\Doom9\Robocopy\_ZIEL\	:: Destination Directory.:::: Include These Files :::	/IF		:: Include Files matching these names::		*.*	:: Include all names (currently - Command Line may override)	/XJ		:: eXclude Junction points. (normally included by default).:::: Exclude These Directories :::	/XD		:: eXclude Directories matching these names::			:: eXclude no names (currently - Command Line may override):::: Exclude These Files :::	/XF		:: eXclude Files matching these names		*.ini		Thumbs.db:::: Copy options :::	/S		:: copy Subdirectories, but not empty ones.	/COPY:DAT	:: what to COPY for files (default is /COPY:DAT).	/DCOPY:T :: COPY Directory Timestamps.:::: Retry Options :::	/R:2		:: number of Retries on failed copies: default 1 million.	/W:4		:: Wait time between retries: default is 30 seconds.:::: Logging Options :::	/UNILOG+:test001.log	:: output status to LOG file as UNICODE (append to existing log).	/V			:: produce Verbose output, showing skipped files.	/NP			:: No Progress - don't display % copied.	/TEE			:: output to console window, as well as the log file.

    Aufruf : Robocopy.exe /JOB:test001

    Ausgabe in der DosBox:

    Code
    Robocopy.exe /JOB:test001 Job File : D:\DOOM9\ROBOCOPY\TEST001.RCJ Log File : D:\Doom9\Robocopy\test001.log-------------------------------------------------------------------------------   ROBOCOPY     ::     Robust File Copy for Windows     ::     Version XP026-------------------------------------------------------------------------------  Started : Sat Jun 16 17:46:57 2007   Source : D:\Doom9\Robocopy\_QUELL\     Dest : D:\Doom9\Robocopy\_ZIEL\    Files : *.*Exc Files : Thumbs.db            *.ini  Options : /JOB *.* /V /TEE /S /COPY:DAT /DCOPY:T /NP /XJ /R:2 /W:4------------------------------------------------------------------------------                          10    D:\Doom9\Robocopy\_QUELL\                 named                52        Picasa.ini                 named              9728        Thumbs.db            New File              427478        DSC02388.jpg            New File              480772        DSC02389.jpg            New File              488568        DSC02390.jpg            New File              358208        DSC02391.jpg            New File              390215        DSC02392.jpg            New File              309270        DSC02393.jpg            New File              481035        DSC02402.jpg            New File              590331        DSC02415.jpg            junction      -1    D:\Doom9\Robocopy\_QUELL\sub junction\          New Dir          8    D:\Doom9\Robocopy\_QUELL\sub hardlink\            New File              427478        DSC02388.jpg            New File              480772        DSC02389.jpg            New File              488568        DSC02390.jpg            New File              358208        DSC02391.jpg            New File              390215        DSC02392.jpg            New File              309270        DSC02393.jpg            New File              481035        DSC02402.jpg            New File              590331        DSC02415.jpg          New Dir          2    D:\Doom9\Robocopy\_QUELL\t.A.T.u. Remixes            New File              27.9 m        10 -            New File                2682        inhalt.txt------------------------------------------------------------------------------                Total    Copied   Skipped  Mismatch    FAILED    Extras     Dirs :         4         2         2         0         0         0    Files :        20        18         2         0         0         0    Bytes :   34.65 m   34.64 m     9.5 k         0         0         0    Times :   0:00:01   0:00:01                       0:00:00   0:00:00    Speed :            35269503 Bytes/sec.    Speed :            2018.137 MegaBytes/min.    Ended : Sat Jun 16 17:46:58 2007

    Ausgabe der LOG:

  • Sieht alles sehr gut aus , super gemacht von dir !!

    ui FEINE Sache! :daumen:


    Danke.

    Bisher bemerkt..
    Die Zusatz Atribute/Optionen unter /A- werden bei mir nicht aktiv .


    Ich hatte den Namen der Checkbox geändert. Lazarus ändert dann alle Aufrufe, aber beim OnChange wird an den Namen das Change angehängt und das wurde nicht erkannt. Dürfte ein Bug in Lazarus sein. :ja:

    Ich habe es geändert.

    * das mit den Logging funktioniert nicht.


    Das ist ärgerlich. Meine ersten Tests liefen leider auch nicht gut; da wurde unter Win2000 gar nichts kopiert. Am Montag werde ich wieder Delphi installieren und das Projekt übernehmen. Dann werden die Consolenausgaben auch abgefangen und in ein Memo ausgegeben.

    Vorschlag:

    Bevor Du dich mit der commandline rumärgerst, bitte erzeuge einen JOB und dann kann man diesen dann aufrufen. Auch ist dies für eine Spätere Lade funktion einfacher. Auch kann man dann besser Filter, wegen den Ordner'n und Datei(ein) einstellen :)


    Die RoboCopy GUI erstellt nur CMD-Dateien. Die JOBs sehen übersichtlich aus. Werde ich mir mal genauer ansehen.

    Anhang: 7x aufgerufen

    Gruß Frank

  • Bei "Zielverzeichnis" wäre es möglich eine Option "Neuer Ordner anlegen" mit einzubringen ?


    Das ist in der Lazarus-Komponente leider nicht vorgesehen. Ich habe versucht, den entsprechenden Code aus Delphi zu verwenden. Einiges konnte ich ergänzen, aber die Deklaration der Function SHGetMalloc mag Lazarus nicht. In der nächsten Delphiversion wird es die Funktion aber auf jeden Fall geben.

    Gruß Frank

  • Fr_An
    Ich habe jetzt 1000 Dateien (9,52 GB) kopiert /S /SEC /A-H.
    Keine Probleme ! Wirklich gute Arbeit von Dir ! :daumen:

    Unter anderem bei /FFT erscheint der englische Hinweistext, ist das von dir gewollt ?

  • Die wirkliche Arbeit hat Microsoft erledigt. Das Programm stellt nur den Befehl zusammen. Ich hatte oben kurz erwähnt, dass ich noch nicht alle Beschreibungen übersetzt habe. Das liegt insbesondere daran, dass ich nicht überall genau weiß, was gemeint ist. Neben der RoboGUI.exe ist eine Hints.ini in dem Archiv. Darin sind alle Beschreibungen, welche beim Start von RoboGUI.exe geladen werden.

    Eben habe ich gesehen, dass es - wenn auch anscheinend erst seit ein paar Tagen - bereits ein Tool mit dem Namen RoboGUI gibt: http://www.steppenmaus.de/index.html, http://www.heise.de/software/default.shtml?prg=44396&kat=199. Es benötigt .NET.

    Gruß Frank

  • @RoboGUI
    Falls die andere GUI wirklich zuerst da war,nenne deine doch z.B
    RoboGUI by Fr_An oder
    Fr_An RoboGUI

    Habe mir die andere GUI gerade angeschaut, die ist zwar grafisch aufwendiger, mehr aber auch nicht..

    Du willst ja hoffentlich nicht aufhören.
    Es gibt ja auch mehrere GUIs für Xvid ,x264,MP3,OGG ,etc.....

  • Das andere RoboGUI wurde bei Heise am 1.6.2007 eingetragen und die Homepage ist vom 13.6.2007. Ich habe hier erst gestern veröffetlicht. Eine unglückliche Überschneidung. Die Namensgleichheit ist kein Grund zum Aufhören. Mit einem Namenszusatz können wir ohne Probleme weitermachen.

    Die Threadüberschrift habe ich schon mal geändert. Im Programm ändere ich es zur nächsten Version.

    Bis zum nächsten Mal (vermutlich 30. Juni 2007) steht an:

    • Portierung nach Delphi
    • Speichern und Laden von Jobs
    • Übersetzung der restlichen Beschreibungen
    • Einbau weiterer Schalter

    Wäre ein Wizard ähnlich RoboCopyWizard sinnvoll?

    Gruß Frank

  • mach doch FroboGUI / FoboGUI oder in Unicode: Робот - Графическая Поверхность стыка Потребителя. :D denn hat bestimmt keiner :)

    Name ist Wagenschmiere, Hauptsache es wird auch eine GUI gebastelt, bis jetzt gibts nur welche, die die Schalter verwalten. Keine Filter bearbeiten können oder RoboCopy überwachen, denn RoboCopy verhält sich sehr seltsam, bei HD-Fehlern.

    Naja und der größte Wunsch: Hardlink Ausschluß!

  • Робот - Графическая Поверхность стыка Потребителя. :D


    Mein Russisch ist sehr schlecht. Hatte mich da immer durchgemogelt. Aber

    Zitat von http://www.online-translator.com/

    Den Roboter - die Graphische Oberfläche der Grenze des Konsumenten


    Die Idee ist sehr interessant.

    Naja und der größte Wunsch: Hardlink Ausschluß!


    Hardlinks sind die Junctions, wenn ich das richtig verstanden habe.

    Gruß Frank

  • Danach beziehen sich Junction auf Ordner und Hardlinks auf Dateien.


    im Grunde kann man es so sagen. Beispiel:

    Junction auf Ordner.

    Code
    Verzeichnis von [B]D:\Doom9\Robocopy\_QUELL\Ordner1[/B]02.09.2005  00:00           427.478 DSC02388.jpg02.09.2005  00:00           480.772 DSC02389.jpg02.09.2005  00:00           488.568 DSC02390.jpg02.09.2005  00:00           358.208 DSC02391.jpg02.09.2005  00:00           390.215 DSC02392.jpg02.09.2005  00:00           309.270 DSC02393.jpg02.09.2005  00:00           481.035 DSC02402.jpg02.09.2005  00:00           590.331 DSC02415.jpg               8 Datei(en)      3.525.877 Bytes
    Code
    Verzeichnis von [B]D:\Doom9\Robocopy\_QUELL\Ordner1_junction[/B]
    02.09.2005  00:00           427.478 DSC02388.jpg
    02.09.2005  00:00           480.772 DSC02389.jpg
    02.09.2005  00:00           488.568 DSC02390.jpg
    02.09.2005  00:00           358.208 DSC02391.jpg
    02.09.2005  00:00           390.215 DSC02392.jpg
    02.09.2005  00:00           309.270 DSC02393.jpg
    02.09.2005  00:00           481.035 DSC02402.jpg
    02.09.2005  00:00           590.331 DSC02415.jpg
                   8 Datei(en)      3.525.877 Bytes

    löscht man jetzt in irgendeinen Ordner eine Datei, wird auch in dem anderen Ordner die Datei gelöscht. Weil es ja eigentlich nur ein Link auf dem Ordner ist. der Vorteil von Junction ist, das man die Ordner auf verschiedene Festplatten verteilen kann. was bei Hardlinks nicht der Fall ist, diese müssen auf der kleichen HD sein.

    Hardlinks auf eine Datei:
    D:\Doom9\Robocopy\_QUELL\Ordner1\DSC02388.jpg
    D:\Doom9\Robocopy\_QUELL\Ordner1\DSC02388_hardlink.jpg

    * ändere ich irgendeine Datei, wird die andere natürlich auch geändert.
    * lösche ich irgendeine Datei, bleibt die andere noch da.
    * und nicht vergessen: auf der Festplatte ist die Datei eigentlich nur einmal da. Und diese Möglichkeit verwende manche um von Programmen, DLLs etc nur eine Version zu haben um Speicherplatz zu sparen. Oder bei Musik Verzeichnisssen:

    Ordner Top40_2006 :
    Platz1_katjarella.mp3
    Platz2_BergH.mp3

    Ordner Top40_2007 :
    Platz1_BergH.mp3
    Platz2_katjarella.mp3

    * bei einem Backup, werden aber die echten Daten kopiert und somit brauchst man dann in diesem Falle doppelt so viel Platz.

  • Code
    /XJF :: eXclude Junction points for Files.


    Dies dürfte die Dateien in Ordner mit Junction Point bezeiehn, also zum Beispiel

    Code
    Verzeichnis von [B]D:\Doom9\Robocopy\_QUELL\Ordner1_junction[/B]


    Heißt dann, die Hardlinks im Quellverzeichnis herausfinden und vom Backup ausschliessen.

    Gruß Frank

  • Heißt dann, die Hardlinks im Quellverzeichnis herausfinden und vom Backup ausschliessen.


    genau. Aber das würde ich erstmal viel später machen. Wichtiger ist hier erstmal ein JOP Erzeugung/ Laden / Bearbeitung.

    Richtung Filterbearbeitung: würde ich erstmal nachdenken, denn das hat bis jetzt keine GUI.

    zb eine Globale Filterliste:

    FileGroups:

    Code
    [Image files]*.jpg *.jpeg *.tif *.tiff *.png *.gif *.tga *.targa *.pct *.pict *.bmp *.pcx[Document files]*.doc *.rtf *.xls *.txt[Program files]*.exe *.com *.dll[Temporary files]*.bak *.tmp *~ Thumbs.db

    FolderGroups:

    Code
    [default]
    System Volume Information | RECYCLER | Recycled | Papierkorb | Netzwerkumgebung

    Und wenn Du internationale Anerkennung wünschst: kommt man um Unicode nicht drumherum!

  • Build 2

    Wichtigste Änderungen:

    • Nach Turbo Delphi portiert.
    • Neue SelectDirectory-Dialoge. Beim Ziel kann neuer Ordner angelegt werden.
    • Größere Hints.
    • Englische Hints, wenn keine Hints.ini gefunden wird.
    • Jobs können über RoboCopy gespeichert werden. Heißt der Job wird ausgeführt und als *.rcj gespeichert.
    • Logfenster.
    • Consolenausgaben werden in das Logfenster umgeleitet.

    genau. Aber das würde ich erstmal viel später machen. Wichtiger ist hier erstmal ein JOP Erzeugung/ Laden / Bearbeitung.


    Die Erstellung von Jobs ohne Robocopy sowie das Laden und Bearbeiten ist der nächste Schritt.

    Richtung Filterbearbeitung: würde ich erstmal nachdenken, denn das hat bis jetzt keine GUI.


    Eine Erweiterung der vorhandenen Filteroptionen XD und XF und Vereinfachung von IA-. Erscheint mir sehr sinnvoll.

    Und wenn Du internationale Anerkennung wünschst: kommt man um Unicode nicht drumherum!


    Leider ist in der kostenlosen Turbo Delphi-Version das Installieren von Komponenten nicht möglich. Sie müssen per Source eingebunden werden. Ich habe das mit TNT versucht. Das Ausführen der Befehlszeile/Speichern als Job bricht mit der Fehlermeldung: 'Das System kann die angegebene Datei nicht finden.' ab. Liegt vermutlich am verwendeten Befehl CreateProcess, welcher bei der Befehlszeile ein PAnsiChar erwartet. Bei WideString braucht man aber PWideChar. Die *.CMD funktioniert. Allerdings habe ich keine Dateinamen mit Unicode dabei. :hm:

    Vielleicht kannst Du testen, ob wenigsten die Unicode-Pfade richtig angegeben werden!?

    ZuTun:

    • Speichern von Jobs ohne Ausführung von Robocopy.
    • Laden und Bearbeiten von Jobs.
    • Erweiterte Filteroptionen (siehe oben).
    • Unicode-Unterstützung.

    Nachtrag:

    Es liegt tatsächlich an CreateProcess. Für Unicode gibt es CreateProcessW. Nun hakt es an der Entsprechung für 'GetStartupInfo(StartupInfo);' bzw an meiner Version der Kernel32.dll. Dort wird nämlich bei GetStartupInfoW nicht StartupInfoW sondern StartupInfoA erwartet, was natürlich falsch ist.

    Anhänge:
    faRoboGUI_unicode.rar 3x aufgerufen.
    faRoboGUI.rar x aufgerufen.

    Gruß Frank

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!