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

Раскидывание файлов по месяцам - C++

Восстановить пароль Регистрация
 
Funny bird
0 / 0 / 0
Регистрация: 17.03.2012
Сообщений: 4
12.10.2012, 14:20     Раскидывание файлов по месяцам #1
Всем доброго времени суток, прошу написать программу которая из 1 папки с находящимися в ней файлами (в именах файлов написаны даты) рассортирует эти файлы по месяцам попутно создавая папки месяца.

прим.
есть файлы допустим за июнь июль сентябрь в одной папке, программа запускается и создает еще 3 папки( июнь июль сентябрь ) и раскидывает файлы соответственно.

З.Ы. Прошу не надо ответов не несущих смысловой нагрузки
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1599 / 1227 / 121
Регистрация: 21.12.2010
Сообщений: 1,875
Записей в блоге: 7
12.10.2012, 21:33     Раскидывание файлов по месяцам #2
примеры имён файлов: 5.11.12.txt, 12_05_2010.txt
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
#include <iostream>
#include <clocale>
#include <string>
#include <boost/filesystem.hpp>
#include <boost/regex.hpp>
namespace fs = boost::filesystem3;
 
int main()
{
    try
    {
        setlocale(LC_ALL, "Russian");
        std::string sfilename, sfolder("c:/Test_folder");
        fs::directory_iterator it(sfolder), itEnd;
        boost::system::error_code ec;
        boost::smatch res;
        boost::regex regfilename("\\d{1,2}[[:punct:]_ ]{1,2}(\\d{1,2})[[:punct:]_ ]{1,2}\\d{2,4}.+");
        for(; it != itEnd; ++it)
        {
            if(it->status().type() == fs::file_type::regular_file)
            {
                sfilename = it->path().filename().string();
                if(boost::regex_search(sfilename, res, regfilename))
                {
                    fs::create_directory(sfolder + "/" + res[1], ec);
                    if(ec)
                        std::cerr << "fs::create_directory failed: " << ec.message() << std::endl;
                    fs::copy(it->path(), it->path().parent_path().string() + "/" + res[1] + "/" + sfilename, ec);
                    if(ec)
                        std::cerr << "fs::copy failed: " << ec.message() << std::endl;
                }
            }
        }
    }
    catch(std::exception const& e)
    {
        std::cerr << e.what() << std::endl;
    }
    return 0;
}
Yandex
Объявления
12.10.2012, 21:33     Раскидывание файлов по месяцам
Ответ Создать тему
Опции темы

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