miércoles, 3 de junio de 2015

31 - Tutorial de C++ en español - copy_folder (Copiar carpeta a un destino)




En este capítulo del Tutorial de C++ crearemos una función llamada copy_folder que nos permitirá copiar una carpeta a un determinado destino, la función se basará en el comando del sistema de Windows xcopy, el programa solicitará al usuario la ruta de la carpeta que se quiere copiar y también la ruta de destino donde se quiere crear.

Más información sobre el comando xcopyhttp://ss64.com/nt/xcopy.html

copy-folder.cpp

#include <iostream>
#include <direct.h> //mkdir
#include <string>

using namespace std;

void copy_folder(string ruta, string destino)
{
   /* Extraer el nombre de la carpeta que se quiere copiar */
   size_t aguja = ruta.rfind("\\"); 
   if (aguja != string::npos)
   {
     /* Modificar el destino agregando el nombre de la carpeta a copiar */ 
     destino = destino + "\\" + ruta.substr(aguja+1);       
   } 
   
   /* Crear la carpeta vacía en el destino */
   mkdir(destino.c_str());
   
   /* String para crear el comando: xcopy ruta destino */
   string cadena;
   cadena = "xcopy " + ruta + " " + destino + " /H /S";
   
   /* Ejecutar el comando */
   system(cadena.c_str());
}

void init()
{
  cout << "Ruta del directorio: ";
  string ruta;
  getline(cin, ruta);
  cout << "Destino: ";
  string destino;
  getline(cin, destino);
  copy_folder(ruta, destino);
  init();
}

int main(int argc, char *argv[])
{
 init();
 system("PAUSE");
 return 0;
}