Форум программистов, компьютерный форум CyberForum.ru

Копирование каталогов - C++

Восстановить пароль Регистрация
 
qwerty1122
1 / 1 / 0
Регистрация: 09.06.2013
Сообщений: 35
03.10.2013, 19:33     Копирование каталогов #1
всем привет)задача такая, реализовать команду "cp" с некоторыми определенными ключами.Некоторые ключи уже сделал, остались еще парочку...и вот в чем вопрос,подскажите как можно сделать рекурсивное копирование каталога??т.е. запускаем нашу программу через командную строку в параметрах указываем что копируем каталог в каталог...как это можно организовать?вот имеющейся код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <cstdlib>
#include "string.h"
#include "stdio.h"
#include "windows.h"
 
 
// функция копирования имени файла1 файлу2 
void cop(char str[],char str1[]){
    char ch[1]; 
    char temp[100];
    temp[0]=0;
    int j;
     if((int) str[1]==58){                  //если файл1 содержит путь
     int i=strlen(str);
     while ((int) str[i]!=92){i--;}             //находим последний \(слэш)
        
     for (j=i+1;j<strlen(str);j++){             
     ch[0]=str[j];
     ch[1]=0;
     strcat(temp,ch);
     }
     strcat(str1,temp);
     } 
     else {strcat(str1,str);
     }
}
 
//Основная программа 
int main(int argc, char * argv[])
{
FILE *out_file;
bool open=false;                        
char sim;
 
  if(argc==4){                          //если введен ключ
   if((int) argv[3][strlen(argv[3])-1]==92){            //если в файле2 указан только путь 
              cop(argv[2],argv[3]);             //присваиваем файлу2 имя файла1
              }            
 
  out_file=fopen(argv[3],"rb");                 //проверяем существует или нет файл приемик
  if(out_file==NULL){ open=false;}
  else {fclose(out_file);open=true;}
  if (strcmp("-I",argv[1])==0){
         if (open==true){
                         printf("rewrite?? \n");
                         scanf("%c",&sim);
                           if ((sim=='y')||(sim=='Y'))
                             {CopyFile(argv[2],argv[3],false);} //копирование с подавлением запроса системы о существовании файла2
                           if ((sim=='n')||(sim=='N'))
                             {CopyFile(argv[2],argv[3],true);}  
                         }
         if (open==false){CopyFile(argv[2],argv[3],false);}
                        }
  if (strcmp("-F",argv[1])==0){
         if(open==true){
                        DeleteFile(argv[3]);
                        CopyFile(argv[2],argv[3],false);
                        }
         if (open==false)
           {
             CopyFile(argv[2],argv[3],false);
           }
}                    
    else {printf("Not key");}
                     
  }
  if(argc==3){                          //если команда введена без ключа
              if((int) argv[2][strlen(argv[2])-1]==92){          
              cop(argv[1],argv[2]);
              }   
              
              CopyFile(argv[1],argv[2],false);          //копирование с подавлением запроса системы о существовании файла2
  }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2013, 19:33     Копирование каталогов
Посмотрите здесь:

создание каталогов C++
C++ Удаление файлов из каталогов
C++ Сортировка каталогов и файлов
Построение дерева каталогов C++
Сравнение содержимого каталогов C++
Провести архивацию каталогов C++
Поиск каталогов C++
Просканировать дерево каталогов C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 16:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru