Datei kopieren - wie?



  • Hallo!

    Ich habe eine Datei im Ordner mit der Exe und möchte sie in einen anderen Ordner kopieren. Wie geht das?
    Bei CFile habe ich nichts gesehen. Und Zeile für Zeile kopieren finde ich blöd. Genauso wie ein "copy ...".

    Also, welcher Befehl macht das? Die Forumsuche mag mich heute mal wieder nicht. 🙄

    Danke 🙂



  • WinAPI: CopyFile / CopyFileEx
    Shell: SHFileOperation

    und es gibt sicher noch mehr Funktionen...



  • Danke Jochen!

    Wo in der MSDN ist ein guter Ansatzpunkt um sich mal quer durch die WinAPI zu lesen?
    Bei der MFC nehme ich einen Klassennamen und gehe dann auf class members. Aber wie ist die Taktik bei der API? Denn gerade da habe ich echten Nachholbedarf. 😞



  • Man kreiert den logischen Funktionsnamen im Kopf und sucht danach in der MSDN. CopyFile() oder FileCopy() stehen zur Auswahl, nur unter ersterm findet man etwas 😉

    Wenn man sich über Themen im gesamten informieren will nehm ich immer die MSDN-Platform-SDK-Doku her und arbeite mich den Helptree hinunter.

    MfG SideWinder



  • /******************************************************************************/
    /*                                                                            */
    /* CLinks::XCopy           																							      */
    /*                                                                            */
    /*----------------------------------------------------------------------------*/
    /* Eingang: Quellverzeichnis, Zielverzeichnis, Info anzeigen: ja/nein         */   
    /* Ausgang: Aktion erfolgreich?!                                              */
    /*----------------------------------------------------------------------------*/
    /* Kopiert Files/Directories in ein bestimmtes ZielDirectory.                 */
    /******************************************************************************/
    BOOL CLinks::XCopy(LPCTSTR lpSource, LPCTSTR lpDestination, BOOL bHidePrompt)
    {
    	TCHAR szSource[MAX_PATH + 2] = _T("");
    	TCHAR szDestination[MAX_PATH + 2] = _T("");
    	::_tcsncpy(szSource, lpSource, MAX_PATH);
    	::_tcsncpy(szDestination, lpDestination, MAX_PATH);
    
    	SHFILEOPSTRUCT fs;
    	::memset(&fs, 0, sizeof(SHFILEOPSTRUCT));
    
    	fs.pFrom = szSource;
    	fs.pTo = szDestination;
    	fs.wFunc = FO_COPY;
    
    	if (bHidePrompt)
    		fs.fFlags |= (FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR);
    
    	return ::SHFileOperation(&fs) == 0;
    }
    

    Esco



  • Wow, danke. 🙂
    Ich hatte mich aber schon für CopyFile entschieden:

    CopyFile(strOrdnerQuelle + "db.sql", strOrdnerZiel + "db.sql", false);
    

    Funktioniert auch gut - gibt allerdings keine Meldung aus, wenn es die Datei nicht gibt.


Anmelden zum Antworten