Hey Leute,
bin durch google auf euer Forum und auch auf einen Thread mit einer ähnlichen Problematik gestoßen und hoffe das mir jemand helfen kann. Der Thread konnte es leider nicht :/
Im Prinzip sollte mein Code alle Ordner, Unterordner und Dateien vom angegebenen Quellpfad aus zum Zielpfad kopieren, gegebenenfalls müssen Ordner neu erstellt werden. Soweit zur Theorie.
Mein Programm läuft auch schon, aber eben nur teilweise bzw es tut nicht das was ich erwarte.
Momentan geht es ins Quellverzeichnis und geht wenn es einen Ordner findet diesen durch. Danach beendet es sich. Das ist aber leider nur die halbe Miete.
Dateien kopieren, Ordner erstellen funktioniert ohne Probleme, das einzige was es nicht tut ist wirklich alle Unterordner und Dateien zu behandeln.
Hier nun noch mein Quellcode.
Ich hoffe ihr könnt mir helfen den Fehler zu finden^^
Edit: Ich weiß jetzt nicht obs relevant ist, das ganze programmiere ich mit VS2010 in C++.
Gruß und Danke schonmal im vorraus.
bin durch google auf euer Forum und auch auf einen Thread mit einer ähnlichen Problematik gestoßen und hoffe das mir jemand helfen kann. Der Thread konnte es leider nicht :/
Im Prinzip sollte mein Code alle Ordner, Unterordner und Dateien vom angegebenen Quellpfad aus zum Zielpfad kopieren, gegebenenfalls müssen Ordner neu erstellt werden. Soweit zur Theorie.
Mein Programm läuft auch schon, aber eben nur teilweise bzw es tut nicht das was ich erwarte.
Momentan geht es ins Quellverzeichnis und geht wenn es einen Ordner findet diesen durch. Danach beendet es sich. Das ist aber leider nur die halbe Miete.
Dateien kopieren, Ordner erstellen funktioniert ohne Probleme, das einzige was es nicht tut ist wirklich alle Unterordner und Dateien zu behandeln.
Hier nun noch mein Quellcode.
Code:
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
void CopyDir(string sSource, string sDest);
void CopyDir(string sSource, string sDest)
{
WIN32_FIND_DATA FData;
string tempSource;
string tempDest;
string sSourcePath;
tempSource = sSource;
tempSource += "\\*";
HANDLE hFile = FindFirstFile(tempSource.c_str(), &FData);
if ( hFile == INVALID_HANDLE_VALUE )
{
cerr << "error while opening input folder: " <<
tempSource.c_str() << endl;
throw new exception("Hier muss was sinnvolles rein");
}
do
{
//ignore directories ".", ".." and ".s(vn)"
if (!( ( FData.cFileName[0] == '.') && ( ( FData.cFileName[1]
== '.' && FData.cFileName[2] == 0) || FData.cFileName[1] == 0 ||
FData.cFileName[1] == 's') ) )
{
if( FData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) //
Directories finden und wegschreiben, rekursiver Selbstaufruf
{
//build new destination path
sDest += "\\";
sDest += FData.cFileName;
//create directory, if it already exists the function fails
CreateDirectory(sDest.c_str(), NULL);
cout <<"Dest: " << sDest.c_str() << endl;
//build new source path
sSource += "\\";
sSource+= FData.cFileName;
cout <<"Source: " << sSource.c_str() << endl;
//rekursiver Selbstaufruf
CopyDir(sSource, sDest);
}
else // Dateien finden und wegschreiben
{
//zielpfad zusammenbasteln
tempDest = sDest;
tempDest += "\\";
tempDest += FData.cFileName;
cout <<"Dest: " << tempDest.c_str() << endl;
//quellpfad zusammenbasteln
sSourcePath = sSource ;
sSourcePath += "\\";
sSourcePath += FData.cFileName;
cout <<"Source: " << sSourcePath.c_str() << endl;
//copy files, if they already exist the function fails
CopyFile(sSourcePath.c_str(), tempDest.c_str(), TRUE);
}
}
}while (FindNextFile( hFile, &FData) == TRUE );
FindClose(hFile);
}
int _tmain(int iArgc, _TCHAR** ppArgv)
{
if ( iArgc < 3 || iArgc > 3 )
{
cerr << "Usage: Program <src> <dst>" << endl;
return 1;
}
try
{
CreateDirectory(ppArgv[2], NULL);
CopyDir(ppArgv[1], ppArgv[2]);
return 1;
//Nun sind alle Files ins Ziel kopiert, sollten sie noch nicht
vorhanden gewesen sein
}
catch ( exception &e )
{
cerr << e.what() << endl;
return 1;
}
catch ( ... )
{
cerr << "unknown error" << endl;
return 1;
}
return 0;
}
Ich hoffe ihr könnt mir helfen den Fehler zu finden^^
Edit: Ich weiß jetzt nicht obs relevant ist, das ganze programmiere ich mit VS2010 in C++.
Gruß und Danke schonmal im vorraus.
Zuletzt bearbeitet: