Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Переименование файлов. форматы *.*, name.*, *.txt и тд (http://forum.oszone.net/showthread.php?t=183792)

Efsey 25-08-2010 09:34 1481197

Переименование файлов. форматы *.*, name.*, *.txt и тд
 
Каким образом возможно переименование файлов с сохранением расширения или частичное переименование?
Пример:

vsyakaychush.e03 в myfile.x03

то есть *.е* или *.а* в myfile.x*

Для переименования пытался использовать:
Код:

DirectoryInfo DI = new DirectoryInfo("D:\\1\\");
      foreach (FileInfo FI in DI.GetFiles("*.e0*")) //Перебираем только .e0*
        {
        //Получаем список всех .e0* архивов(FI.FullName) и делаем с ними что нить!   
        FileInfo info = new FileInfo(FI.FullName);
        FI.MoveTo ("D:\\1\\myfile.x0*");//переименование в myfile.x0*... только знак * не проходит
        }


LilLoco 25-08-2010 12:10 1481260

Что то не совсем понятно! тебе к предыдущему расширению нужно спереди прибавить символ?
по твоей схеме :
Цитата:

Цитата Efsey
то есть *.* в myfile.x* »

должно получится что то типа : vsyakaychush.e03 в myfile.xe03

И как вообще куча файлов с одним именем?оО Объясни пожалуйста, что конкретнее надо!

Efsey 25-08-2010 12:14 1481262

Решил проблему таким образом:
Код:

private void chnam_Click(object sender, EventArgs e)
        {
            DirectoryInfo DI = new DirectoryInfo("D:\\1\\");
            foreach (FileInfo FI in DI.GetFiles("*.e0*")) //Перебираем только .e0*
            {
                //Получаем список всех .eo* архивов(FI.FullName) и делаем с ними что нить!   
                FileInfo info = new FileInfo(FI.FullName);
                string name = FI.Name;
                MessageBox.Show(FI.Name);
                string result = name.Substring(name.IndexOf(".", 0));//чтение от точки, то есть только расширение
                MessageBox.Show(result);
                string str = "D:\\1\\myfile" + result;
                MessageBox.Show(str);
                File.Move(FI.FullName, str);
            }
        }

Решение, конечно, не очень. Может есть способы попроще?



Нужно оставить от расширения последние две цифры.

RUVATA 25-08-2010 12:17 1481265

можно вопрос а зачем?... может есть более толерантный способ решить твою задачу...
то что ты пытаешься сделать м-м-м-м-м как бы тебе сказать... :clever-ma

LilLoco 25-08-2010 12:20 1481269

Цитата:

Цитата Efsey
string result = name.Substring(name.IndexOf(".", 0)); »

,

Все бы хорошо, но вот если имя файла будет иметь вид что то вроде : 123.456.txt, метод IndexOf ищет первое вхождение символа в строке! и получится что ты считаешь не только расширение!

Делай так :
Код:

string result = FI.Extension; //Вернет расширение файла!

Efsey 25-08-2010 12:28 1481275

RUVATA, я вот и спрашиваю - каким способом это можно сделать. учу С# ЦЕЛЫХ 8 Дней

Файлы как раз только с одной точкой... по крайней мере пока, но способ хотелось бы найти заранее

LilLoco 25-08-2010 12:31 1481277

Цитата:

Цитата Efsey
Файлы как раз только с одной точкой... по крайней мере пока, но способ хотелось бы найти заранее »

Способ выше :) :) :) Вроде должен подойти :)

Efsey 25-08-2010 12:40 1481289

Хм, а ларчик просто открывался :) , осталось только извлечь две цифры из расширения.

RUVATA 25-08-2010 12:58 1481299

LilLoco, предлогает самый верный способ

Цитата:

Цитата LilLoco
string result = FI.Extension; »

в твоем случае...

А мой вопрос заключался в следующем;
Зачем вообще менять расширения файлам? какая такая нужда заставляет?
опиши логику программы...

LilLoco 25-08-2010 13:06 1481305

Цитата:

Цитата Efsey
осталось только извлечь две цифры из расширения. »

Омг, какие то ищо цифры в расширении :) Может быть символы? если символы то метод String.Substring(int,int) - Извлекает подстроку из строки!Ну а в зависимости 2 сначала или с конца, меняй параметры метода!


Время: 12:02.

Время: 12:02.
© OSzone.net 2001-