Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 0
Регистрация: 25.01.2015
Сообщений: 30

Как получить имя поддиректорий

29.05.2022, 23:38. Показов 379. Ответов 1

Студворк — интернет-сервис помощи студентам
Дамы и Господа!
Как обычно, очень нужна Ваша помощь. Задача у меня следующая: нужно скопировать все файлы и папки по указанному адресу. К сожалению, не могу понять, как зайти в подкатегорию. Спасибо большущее всем и простите за глупые вопросы.


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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <Windows.h>
#include <io.h>
#include <direct.h>
#include <fstream>
 
using namespace std;
const int size = 255;
/*
Программа для копирования каталогов (копируются все вложенные папки и файлы). 
*/
 
// Function to copy directory
bool CopyDirectory(char path[], char copypath[]) {
 
 
    _finddata_t finddata;
    char pathfind[MAX_PATH];
    strcpy_s(pathfind, path); // Copying path in pathfind
    // char info[MAX_PATH];
 
    // Start search for directory
    int result = _findfirst(pathfind, &finddata);
    if (result == -1) {
        cout << "Directory is not exist\r\n";
        return false;
    }
    int flag = result;
    while (flag != -1) {
        // Checking if directory or not
        if (finddata.attrib & _A_SUBDIR) {
            cout << "Catalogue: " << finddata.name << "\r\n";
            char temp[sizeof(copypath) + sizeof(finddata.name)];
            strcpy_s(temp, copypath);
            strcat_s(temp, finddata.name);
            // Let's try create new directory at our new path
            if (_mkdir(temp) == -1) {
                cout << "Can't create directory.\r\n";
                //return false;
            }
            else {
                cout << "Copy of directory " << temp << " created.\r\n";
            }
//[B] Собственно, тут мне нужно зайти в поддиректорию и запустить функцию рекурсивно, копируя
// все директории по новому адресу. Спасибо всем.[/B]
/*
            _finddata_t f;
            char npath[MAX_PATH];
            char ncpath[MAX_PATH];
            strcpy_s(npath, "\\*.*");
            int res = _findfirst(npath, &f);
            strcpy_s(ncpath, f.name);
            if (_mkdir(ncpath) == -1) {
                cout << "Can't create inner directory.\r\n";
            }
            else
                cout << "Inner directory has to be checked.\r\n";
 
            
            CopyDirectory(npath, ncpath);
*/
        }
        // Case when filedata.name file
        else {
            char temp[sizeof(copypath) + sizeof(finddata.name)];
            cout << "File: " << finddata.name << "\r\n";
            ifstream infile(finddata.name, ios::in | ios::binary);
            ofstream outfile(temp, ios::out | ios::binary);
            if (!infile || !outfile) {
                cout << "Error during file copying\r\n";
                return false;
            }
            
        }
        flag = _findnext(result, &finddata);
    }
    
 
 
    return true;
}
 
int main(int argc, char* argv[])
{
    char a[] = "D:\\Test to del";
    char to[] = "D:\\Copy Test to del";
    if (CopyDirectory(a, to)) {
        cout << "It works!\r\n";
    }
    
    Sleep(5000);
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.05.2022, 23:38
Ответы с готовыми решениями:

Как получить имя нажатой клавиши
Может кто занет, есть ли какая-нибудь функция которая возвращает по коду нажатой клавиши ее название? Например, была нажат ESC - мы...

Как получить имя файла при перетаскивании на программу?
Ну т.е. у меня консольное приложение, и нужно работать с файлом.

Как получить из 2-х текстовых значений 'b' и '1' в общее имя переменной b1?
Подскажите пожалуйста, как решить такую задачку... весь поисковик перерыл в поисках ответа... //есть вот такие данные char b0 =...

1
Just Do It!
 Аватар для XLAT
4212 / 2671 / 655
Регистрация: 23.09.2014
Сообщений: 9,093
Записей в блоге: 3
30.05.2022, 01:59
Цитата Сообщение от Snake2015 Посмотреть сообщение
Как получить имя поддиректорий
C++
1
2
3
4
5
6
7
8
#include <iostream>
#include <filesystem>
 
int main()
{   for(auto &file : std::filesystem::recursive_directory_iterator("./"))
    {   std::cout << file.path() << '\n';
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.05.2022, 01:59
Помогаю со студенческими работами здесь

Как можно получить имя исполняемого модуля проги?
Как можно получить имя исполняемого модуля проги? Заранее спасибо.

Как получить имя файла для дальнейшей работы с этим файлом?
Есть программа в которой используются функции GetOpenFile() и GetSaveFile() для открытия и сохранения файлов. Нужно получить из этих...

Как расшарить диск(папку) и получить имя компа на котором выполняется приложение?
Вот как это сделать? Ведь просто нужно юзать какие-то API-шные функции. А какие и как? Заранее всем благодарен за ответ.

Как в билдере получить с сервера (MySQL 5.1, имя базы "skola", имя table "info") имя столбцов и имя строк
Доброва времены суток Как в билдере получить с сервера (MySQL 5.1, имя базы &quot;skola&quot;, имя table &quot;info&quot;) имя столбцов и...

Как получить имя процесса?
Начал писать диспетчер задач. Получаю список процессов. deque&lt;PROCESSENTRY32&gt; deq; if (deq.size() != 0) ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru