PDA

Показать полную графическую версию : [решено] Переименование файлов. форматы *.*, name.*, *.txt и тд


Efsey
25-08-2010, 09:34
Каким образом возможно переименование файлов с сохранением расширения или частичное переименование?
Пример:

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
Что то не совсем понятно! тебе к предыдущему расширению нужно спереди прибавить символ?
по твоей схеме :
то есть *.* в myfile.x* »
должно получится что то типа : vsyakaychush.e03 в myfile.xe03

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

Efsey
25-08-2010, 12:14
Решил проблему таким образом: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
можно вопрос а зачем?... может есть более толерантный способ решить твою задачу...
то что ты пытаешься сделать м-м-м-м-м как бы тебе сказать... :clever-ma

LilLoco
25-08-2010, 12:20
string result = name.Substring(name.IndexOf(".", 0)); »,

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

Делай так :

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

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

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

LilLoco
25-08-2010, 12:31
Файлы как раз только с одной точкой... по крайней мере пока, но способ хотелось бы найти заранее »
Способ выше :) :) :) Вроде должен подойти :)

Efsey
25-08-2010, 12:40
Хм, а ларчик просто открывался :) , осталось только извлечь две цифры из расширения.

RUVATA
25-08-2010, 12:58
LilLoco, предлогает самый верный способ

string result = FI.Extension; »

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

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

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




© OSzone.net 2001-2012