tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
10
ZUGRIFFE
1218
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Pitri
    Pitri Pitri ist offline Rookie
    Registriert seit
    Aug 2010
    Beiträge
    8
    Hallo Leute!

    Ich bin ein newbie in C++ und habe dieses Tutorial gelesen, denn ich würde gerne ein programm schreiben, das beim Ausführen alle in dem Ordner vorhandenen Dateien einer bestimmten Sorte findet, sie zuerst in ein verzeichnis kopiert (Backup) und dann die Quelldatei nochmal verschiebt!

    Ist das mit bescheidenen scriptkenntnissen möglich, oder benötigt das um einiges mehr? Und wenn ja wäre ich für Codeschnipsel dankbar!
     

  2. #2
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Willkommen im Forum

    Welches Betriebssystem verwendest du denn?

    Und was ist "eine Sorte"? Immer die gleiche Endung im Dateinamen oder unterscheidest du irgendwie anders?
     

  3. #3
    Avatar von Pitri
    Pitri Pitri ist offline Rookie
    Registriert seit
    Aug 2010
    Beiträge
    8
    Ich verwende Win7!

    Die unterscheidung liegt nur an der Endung! In der auswahl sind alle dateien die mit .c4d .c4s .c4f .c4g .c4u oder .c4p enden! Wem die Dateiendungen unbekannt vorkommen: Kein Wunder, denn sie sind in einem Spiel benutzt!

    Das Programm werde ich dann im Download-ordner benutzen, es soll alle frisch runtergeladenen dateien fürs spiel aus dem downloadordner rauskopieren und ins spiel schieben, somit muss ich das nicht immer machen :P

    (Wen's interessiert: Das spiel heißt Clonk! :P)
     

  4. #4
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Ich hab zwar XP, aber unter 7 müsste s gleich funktionieren.
    Willst du das unbedingt in C machen? Eine Batchdatei würde auch reichen
    (Deine Endungsanzahl ist ja überschaubar)

    Also: Eine Textdatei mit Endung .bat machen

    Zum kopieren:
    xcopy "downloadodner\*.c4d" "zielordner\"
    xcopy "downloadodner\*.c4s" "zielordner\"
    ...

    Zum Leeren des Downloadordners:
    del "ordner\*.c4d"
    ...

    Mehr ist das nicht
     

  5. #5
    Avatar von Pitri
    Pitri Pitri ist offline Rookie
    Registriert seit
    Aug 2010
    Beiträge
    8
    Erstmal danke für deinen tipp! Es klappt prima!

    Aber da ich zur Zeit C++ lerne, wäre es ja nicht schlecht, wenn ich tipps bekommen würde, wies damit auch geht! :P
     

  6. #6
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Dateinamen in einem Ordner herausfinden: FindFirstFile, FindNextFile

    Umbenennen/Verschieben: rename (ggf. Gleicher Name, aber anderer Pfad zum verschieben)
    Löschen: remove

    Kopieren: Hmmm...irgendwie gibts da keine fertige Funktion (oder?)
    Also hier (ungetestet, bei Kompilerfehlern meld dich halt nocheinmal):

    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    #include<stdio.h>
    #include<io.h>
    .........
    int mycopy(char *quelle,char *ziel,char ueberschreib)
    {
        FILE *ein;FILE *aus;__int64 len,i=0;
        aus=fopen(ziel,"rb");
        if(aus!=NULL)
        {
            fclose(aus);
            if(!ueberschreib)return 1;
        }
        ein=fopen(quelle,"rb");
        if(ein==NULL)return 2;
        aus=fopen(ziel,"wb");
        if(aus==NULL)return 3;
        len=_filelengthi64(fileno(ein));
        if(len<0)return 4;
        for(i=0;i<len;i++)fputc(fgetc(ein),aus);
        fclose(ein);fclose(aus);
        return 0;
    }
    Parameter:
    1: Quelldatei,
    2: Zieldatei,
    3: Wenn 1 wird ggf. vorhandene Zieldatei überschrieben, sonst 0
    Gibt 0 zurück, wenn keine Fehler waren, sonst nicht 0
    Geändert von sheel (24.08.10 um 00:00 Uhr) Grund: Code ausgebessert
     

  7. #7
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.802
    Blog-Einträge
    5
    Zitat Zitat von sheel Beitrag anzeigen
    Kopieren: Hmmm...irgendwie gibts da keine fertige Funktion (oder?)
    CopyFile sieht vielversprechend aus.

    Grüße,
    Matthias
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  8. #8
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Steht die nicht in der MSDN oder sollte ich endlich schlafen...
     

  9. #9
    Avatar von Pitri
    Pitri Pitri ist offline Rookie
    Registriert seit
    Aug 2010
    Beiträge
    8
    Zitat Zitat von sheel Beitrag anzeigen
    Dateinamen in einem Ordner herausfinden: FindFirstFile, FindNextFile
    Und wie geht das mit FindFirstFile? Den 2 Parameter blick ich nicht so wirklich! :S

    Ansonsten hab ich da schon ein konzept:

    Code :
    1
    2
    3
    4
    5
    6
    
    while(Datei vorhanden)
    {
      ins Backup kopieren;
      in den spieleordner kopieren;
      löschen;
    }
     

  10. #10
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Wenn ich mich richtig erinnere, sind die ersten beiden Ergebnisse . und .., also zu ignorieren
    Also:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    HANDLE findhandle;
    WIN32_FIND_DATA finddata;
    ...
    findhandle=FindFirstFile("pfad\\*.txt",&finddata);
    if(!FindNextFile(findhandle,&finddata)){/*Fehler*/}
    while(FindNextFile(findhandle,&finddata))
    {
        //Dateiname ist in finddata.cFileName
        /*ins Backup kopieren;
        in den spieleordner kopieren;
        löschen;*/
    }
     

  11. #11
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.
    Zitat Zitat von sheel Beitrag anzeigen
    Wenn ich mich richtig erinnere, sind die ersten beiden Ergebnisse . und ..
    Wo steht, das es immer so ist? Link ins MSDN?

    Man findet hier im Forum und auch im MSDN bessere Beispiele als den schnell zusammengefrickelten Code von sheel.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. Daten Kopieren & Verschieben Intelligenter als Windows
    Von B12 im Forum Microsoft Windows
    Antworten: 3
    Letzter Beitrag: 21.04.08, 09:55
  2. Antworten: 3
    Letzter Beitrag: 17.12.04, 14:28
  3. Kopieren und Verschieben funktioniert nicht mehr
    Von man man im Forum Microsoft Windows
    Antworten: 1
    Letzter Beitrag: 08.03.04, 11:30
  4. Variablen in Dateien erkennen
    Von chris_sit im Forum PHP
    Antworten: 0
    Letzter Beitrag: 11.08.03, 23:43
  5. Datenbank kopieren bzw verschieben
    Von Rosikopter im Forum Visual Basic 6.0
    Antworten: 6
    Letzter Beitrag: 09.04.03, 14:17

Stichworte