Dateien von A nach B kopieren, unbenenen und löschen



  • abend zusamen,
    ich brauche dringend Hilfe, ich versuche grad C++ zu lernen :-), also anfänger mit sehr geringe vorkenntnisse.

    zu meine Frage.

    ich möschte mehrere Bilderdatein(jpg) von Ordner A nach Ordner B kopieren, umbenenen, und löschen,
    der vorgang muss so laufen, dass ich:
    Bild 1 Kopieren -> umbenen -> Löschen dann wird das Bild 2 Kopiert -> umbenant -> gelöscht u.sw.
    die Bilder nach dem Kopieren werden den selben namen in Ordner B bekommen, da es ja immer nur ein Bild vor dem Löschen verfügbar sein.

    kann mir bitte jemand sagen, wie ich das hinbekommen kann, oder vielleicht ein Bsp wäre sehr nett.

    ich danke euch für jede Hilfe.



  • @abfart Hat dieses Vorgehen einen Grund?

    Warum öffnest du nicht gleich die Datei mit richtigem Namen und schreibst (kopierst) die Daten da rein?


  • Mod

    Prinzipiell damit: https://en.cppreference.com/w/cpp/filesystem

    Aber: Zum Lernen bringt das nicht viel. Das ist ja bloß nacheinander Aufrufen von fertigen Funktionen, ohne tiefere Logik. Du musst eine Menge Referenzen lesen und alles zusammenbauen, aber hinterher hast du bloß gelernt, die Nischenanwendung filesystem zu benutzen.

    Wenn es um einen praktischen Anwendungsfall geht, dann ist C++ eher eine wenig geeignete Sprache für solche Aufgaben. Dies löst man sehr schnell und elegant mit den Scriptingmöglichkeiten gängiger Betriebssysteme.



  • @DirkB danke erstmal für dein Antwort.

    ja es hat ein grund, ich möschte mit einem Software Bilder vergleichen, dass ich ein Bild habe und mit verschiedene Bilder vergleichen. Problem ist, das software kann die Bilder aus dem Ordner nicht Zyklisch laden, von daher wollte ich einzel nach einander kopieren und ein festen Namen geben.
    ich habe an for schleife gedacht, kopiren tut es aber halt immer das selbe Bild.



  • @SeppJ danke für dein antwort erstmal.

    wie geht das mit dem Scripting, da bin ich ja neugierig.

    das soll eigentlich ein praktischer Anwendung, und muss mit C++ Programmiert werden. ich bin eigentlich SPSler und meine Kenntnisse in des C++ sind sehr gering.


  • Mod

    @abfart sagte in Dateien von A nach B kopieren, unbenenen und löschen:

    ja es hat ein grund, ich möschte mit einem Software Bilder vergleichen, dass ich ein Bild habe und mit verschiedene Bilder vergleichen. Problem ist, das software kann die Bilder aus dem Ordner nicht Zyklisch laden, von daher wollte ich einzel nach einander kopieren und ein festen Namen geben.
    ich habe an for schleife gedacht, kopiren tut es aber halt immer das selbe Bild.

    Falls es wirklich um das Lösen dieses konkreten Anwendungsfalls geht dann nochmal: Schreib ein Shellscript! Die sind perfekt gemacht für solche Aufgaben. Wenn es unbedingt C++ zum Üben sein soll, hast du ja meinen Link von oben.

    Aber: Deine Idee klingt sehr kompliziert. Was du brauchst ist doch etwas, dass dir die Dateien zyklisch durchgeht und deren Namen dem Bildvergleicher serviert. Wozu die komplizierten und fehleranfälligen Zwischenschritte mit dem Kopieren, Umbennen, Löschen? Dateien zyklisch durchgehen können auch wieder alle Scriptsprachen ganz einfach, oder C++ etwas komplizierter mit den oben genannten Mitteln.


  • Mod

    @abfart sagte in Dateien von A nach B kopieren, unbenenen und löschen:

    wie geht das mit dem Scripting, da bin ich ja neugierig.

    Das lässt sich natürlich nicht in drei Sätzen ausschöpfend erklären, aber die Idee ist ungefähr so: Dir ist bewusst, dass so ziemlich jedes Betriebssystem eine (oder mehrere) Kommadozeilen anbietet? Wo man dann Schritt für Schritt einfache Befehle ausführen kann, indem man sie eintippt. So wie "Starte Programm XYZ mit den Parametern! Kopiere Datei a.txt nach b.txt! Zeige b.txt an!". Für diese Kommandozeilen kann man auch einfache, kleine Programme schreiben, normalerweise indem man halt zeilenweise solcher Kommandos in eine Textdatei schreibt, die man dann ausführen kann. Ein bisschen Kontrollfluss hat man natürlich auch zur Verfügung. Da diese Kommandozeilen sehr eng mit Konzepten wie "Dateien", "Ordnern", oder "Starten von Programmen" arbeiten, haben sie sehr mächtige und einfach benutzbare Mittel dafür zur Verfügung. Aufgaben der Art "Mach etwas bestimmtes mit allen Dateien der Art XYZ in Ordner ABC" und ähnliches können damit also sehr einfach erledigt werden.

    Gewiefte Anwender würden sogar sagen, dass das die einzig wahre Art ist, einen Computer zu benutzen. Denn wenn man sich erst einmal damit auskennt, ist man damit viel schneller und effizienter als mit jeder grafischen Oberfläche. Der Knackpunkt ist natürlich, dass man sich erst einmal auskennen muss.



  • Edit: Habe es noch einmal gecheckt, war vermutlich Blödsinn.



  • @abfart Welches Betriebssystem und um welches Programm zum Vergleichen von Bildern handelt es sich? Bzw. wie wird dieses gestartet? (Normalerweise kann man bei solchen Programmen über die Kommandozeile mitgeben was sie vergleichen sollen.)



  • @hustbaer
    ich arbeite mit dem Betriebsystem W10, und EyeVision als Bildervergleich-Programm,



  • Da ist wohl die powershell das richtige Werkzeug für Dein Vorhaben.



  • @abfart OK. Und wie wird EyeVision gestartet für den Bildvergleich?

    Ansonsten: Wie @Belli vorgeschlagen hat PowerShell wäre eine Möglichkeit. Es sollte auch mit ganz normalen Batch-Files gehen. Oder, wenn du wirklich eine "echte" Programmiersprache verwenden willst: Ich persönlich würde das in C# schreiben.

    Und wenn du es wirklich in C++ machen willst... std::filesystem wurde ja bereits erwähnt.


Log in to reply