Newsgroup: it.comp.programmare.win32
Titolo: Copiare una cartella intera

Ciao
come si fa in c++ a copiare una cartella intera da un posto all'altro?
Grazie
Ciao

come si fa in c++ a copiare una cartella intera da un posto all'altro?
MoveFile.



Purtroppo MoveFile "SPOSTA" la cartella o il file, io vorrei copiarla, per fare un backup automatico dei file del mio programma.

 
Perche' non provi ad usare un software per il controllo della versione?
Prova Subversion.
Saluti  Manlio Perillo

per fare un backup automatico dei file del mio programma.
Hai ragione. Controlla la SHFileOperation, io non l'ho testata.

 Purtroppo MoveFile "SPOSTA" la cartella o il file, io vorrei copiarla, per
fare un backup automatico dei file del mio programma.
ci sono anche CopyFile e CopyFileEx, ma considera anche l'ipotesi di
utilizzare come ti hanno suggerito un sistema per gestire versioni
concorrenti, specie se lavori con altri programmatori.
ciao
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

On Thu, 29 Dec 2005 19:05:18 +0100, 
mr...@fake.com
 (mrnt) wrote:
Grazie a tutti, 
sono riuscito a farlo grazie a una procedura un po' complessa
che però alla fine funziona.
La incollo qui sotto così magari se qualcuno a lo stesso problema, ci può guardare...
Occhio però non sono un porgrammatore espertissimo per cui la forma può essere molto lacunosa!
ciao
	#define BUFSIZE MAX_PATH
 
	WIN32_FIND_DATA FileData; 
	TCHAR Buffer[BUFSIZE];
	GetCurrentDirectory(BUFSIZE, Buffer);
	CString Buff;
	CString Buff2;
	CString Buff3;
	HANDLE hFind = INVALID_HANDLE_VALUE;
	BOOL fFinished = FALSE;
	CString Origine;
	CString Destinazione;
	CFile DBFile;
 
    if (DBFile.Open("DB.dat",CFile::modeRead))
		{
			DBFile.Read(&DBase,sizeof(DB));
		}
		DBFile.Close();
        if (DBase.EseguiBkp==1)
        {
	        if (MessageBox("Vuoi creare il BacKup dei file?","JIT",MB_OKCANCEL)==IDOK)
	        {
 
		        Buff.Format("%s\\",Buffer);
		        CString errore;
                CreateDirectory(DBase.PercorsoBackup,0);
		        ///cartella principale
		        hFind =FindFirstFileEx( TEXT("*.dat"), 
                        FindExInfoStandard, 
                        &FileData, 
                        FindExSearchNameMatch, 
                        NULL, 
                        0 );
			        Destinazione.Format("%s%s",DBase.PercorsoBackup,FileData.cFileName);
			        Origine.Format("%s%s",Buff,FileData.cFileName);
			        CopyFile(Origine,Destinazione,0);
		        while (FindNextFile(hFind, &FileData) != 0) 
		        { 
			        Destinazione.Format("%s%s",DBase.PercorsoBackup,FileData.cFileName);
			        Origine.Format("%s%s",Buff,FileData.cFileName);
			        CopyFile(Origine,Destinazione,0);
 
		        }
		        Buff.Format("%s\\",Buffer);
		        Buff2.Format("%sORDINI",DBase.PercorsoBackup);
		        Buff3.Format("%sORDINI\\*.dat",Buff);
		        //Cartella Ordini
		        CreateDirectory(Buff2,0);
		        Buff2.Format("%s",DBase.PercorsoBackup);
 
		        hFind =FindFirstFileEx( Buff3, 
                        FindExInfoStandard, 
                        &FileData, 
                        FindExSearchNameMatch, 
                        NULL, 
                        0 );
			        Destinazione.Format("%s\\ORDINI\\%s",Buff2,FileData.cFileName);
			        Origine.Format("%s\\ORDINI\\%s",Buff,FileData.cFileName);
			        CopyFile(Origine,Destinazione,0);
		        while (FindNextFile(hFind, &FileData) != 0) 
		        { 
			        Destinazione.Format("%s\\ORDINI\\%s",Buff2,FileData.cFileName);
			        Origine.Format("%s\\ORDINI\\%s",Buff,FileData.cFileName);
			        CopyFile(Origine,Destinazione,0);
 
		        }
			        FindClose(hFind);
	        }
        }