Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перенос файлов с переименовыванием / 1 сообщений из 1, страница 1 из 1
09.11.2014, 03:13
    #38799700
iluxa1810
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос файлов с переименовыванием
Задача состоит в следующем:
Имеется список файлов и номер дела:
Список файлов Номер дела
С:\папка\86-1-1\0001.jpg 24
С:\папка\86-1-1\0002.jpg об
С:\папка\86-1-1\0003.jpg 24
С:\папка\86-1-1\0004.jpg 25
С:\папка\86-1-2\0001.jpg 2
С:\папка\86-1-2\0002.jpg 2
С:\папка\86-1-2\0003.jpg об
С:\папка\86-1-2\0004.jpg 3

Выходное название файлов получается путем комбинирования последней папки с номером дела.
Пример:
С:\папка\86-1-1\56-1-1-24.jpg
Если следом идет дело с названием об, то создается файл с нумерацией предыдущего, но припиской об
С:\папка\86-1-1\56-1-1-24об.jpg
Если в пределах одной папки такое дело уже существует, то пишется литера
С:\папка\86-1-1\56-1-1-24а.jpg (Если 24а имеется, то пишется б и т д).
Если за литерным делом следует об, то она приписывается так
С:\папка\86-1-1\56-1-1-24а об.jpg

Метод для копирования я реализовал, осталось только сформировать выходные пути для копирования.

Я попытался реализовать метод, который это делает, но чувствую, что он слишком избыточный и можно сделать все проще.
Код: 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.
class Pathes
        {
            public string InnerPath { get; set; }
            public string OutterPath { get; set; } //Вот это поле предстоит заполнить
            public string List { get; set; }
        }
static void CreateOutPath(List<Pathes> Pathes)
        {
            string tmp;
            string buf=string.Empty;
            foreach (var path in Pathes)
            {
                    if (path.List != "об")
                    {
                        tmp = Path.Combine(path.OutterPath,
                            Regex.Match(path.OutterPath, "(?<=([\\].*){4}).*").Value + ".jpg");
                        if (Pathes.Exists(x => x.OutterPath == tmp))
                        {
                            var ExistName = Pathes.Where(
                                x =>
                                    Regex.Match(x.OutterPath, ".*(?=.jpg)").Value ==
                                    Regex.Match(tmp, ".*(?=.jpg)").Value).OrderByDescending(x => x.OutterPath).Take(1);
 
 
                            tmp = (Regex.Match(ExistName.GetEnumerator().Current.OutterPath, "(.(?=.jpg))").Value) ?   :
                            ; //если последний символ буква, то берем следующую букву, иначе присваиваем добавляем а
 
                        }
                        path.OutterPath = tmp;
                        buf = tmp;
                    }
                    else path.OutterPath = buf.Replace(".jpg", "об.jpg");
 
            }
        }
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перенос файлов с переименовыванием / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]