2012-11-23 71 views
0

我想重命名一個包含3.000圖像文件和C#的目錄(C:\Users\userPC\Desktop\MATT\PROVA\IMG\AW12)。這些圖像確實有這種類型的名稱:重命名圖像文件

area1_area2_area3_area4.jpg 

我想借此對區域2和AREA4形成更名爲area2_area4.jpg一個新的文件。這些區域沒有正規的字符數量。我能怎麼做?我發現這個討論Rename image files on server directory

但我是一個編程新手,我不能工作我們如何解決我的問題。

+1

這將使用'System.IO'和'System.Text類是非常簡單的。 RegularExpressions'。請求谷歌對這些命名空間的一些幫助,這不會花費很長時間! –

+0

你有區域之間的區域分隔嗎?我的意思是例如'_' –

+0

@looper我試過一些代碼從網上提取,但不起作用。我的想法是使用FileStream,但不幸的是,我仍然是新手自己寫一個完整的腳本。 –

回答

2

下面是一個solution.Please知道,它不會做任何混亂:)

public void rename(String path) 
{ 
    string[] files =System.IO.Directory.GetFiles(path); 
    foreach(string s in files) 
    { 
    string[] ab=s.split('_'); 
    if(ab.Lenght>3) 
    { 
     string newName=ab[1]+ab[3]; 
     System.IO.File.Move(s,path+newName); 
    } 
    } 
} 

您必須使用這種類型的參數

rename("C://Users//userPC//Desktop//MATT//PROVA//IMG//AW12//") 

分隔符可以的調用方法前檢查在這裏更改 - >s.split('_')

+0

感謝nucandrei爲您的時間。我已經嘗試了你的代碼,但是我已經通過調試器JIt獲得了一條錯誤消息,說「索引超出了數組的範圍,繼續。退出」。你知道爲什麼? –

+0

可能在文件夾中有一些文件沒有3個分隔符。您應該在設置newName之前檢查它。嘗試添加「如果(ab.Lenght> 3){字符串newName = ....」 –

+0

trippino可能有一個很好的提示。這個錯誤通常是當訪問索引不支持你的數組。因此,在這種情況下,你有一些不尊重的文件area1_area2_area3_area4.jpg格式 – nucandrei

0

首先獲取文件夾中包含的文件名列表

var listOfFileNames = Directory.GetFiles(directory); 

您提到區域沒有規定數量的字符(我假設區域由下劃線字符分隔)。因此,將每個文件名分割爲四個區域,使用下劃線字符作爲分隔符。

然後建立新的文件名,exmple,

foreach(var fileName in listOfFileNames) 
{ 
    var areas = fileName.Split('_'); 
    var newFileName = string.Format({0}{1}{2}, areas[0], areas[1],".jpg"); 
} 

希望這有助於

+0

感謝user65439您的時間。我已經嘗試這個辦法: void Button1Click(object sender, EventArgs e) { var listOfFileNames = Directory.GetFiles("C://Users//userPC//Desktop//MATT SUPERDRY//PROVA//IMG//AW12//"); \t \t \t foreach(var fileName in listOfFileNames) \t \t \t { \t \t \t var areas = fileName.Split('_'); \t \t \t var newFileName = string.Format({0}{1}{2}, areas[1], areas[3], ".jpg"); \t \t \t File.Move(fileName, listOfFileNames + newFileName); } 但它在「VAR newFileName」的行產生一定的誤差。 :( –

+0

什麼是你得到 – user65439

1
using System.IO; 

namespace ConsoleApplication 
{ 
    public class Program 
    { 
     public static void Main(string[] args) 
     { 
      // Rename all files in the C:\Temp\ directory. 
      Program.RenameFiles(new DirectoryInfo(@"C:\Temp\")); 
     } 

     public static void RenameFiles(DirectoryInfo path) 
     { 
      // Does the path exist? 
      if (path.Exists) 
      { 
       // Get all files in the directory. 
       FileInfo[] files = path.GetFiles("*.jpg"); 
       foreach (FileInfo file in files) 
       { 
        // Split the filename 
        string[] parts = file.Name.Split('_'); 
        // Concatinate the second and fourth part. 
        string newFilename = string.Concat(parts[1], "_", parts[3]); 
        // Combine the original path with the new filename. 
        string newPath = Path.Combine(path.FullName, newFilename); 
        // Move the file. 
        File.Move(file.FullName, newPath); 
       } 
      } 
     } 
    } 
} 
+0

感謝帕特里克您的時間我已經嘗試你的代碼,但我已經得到這個錯誤確切的錯誤:「未處理的異常:無法創建文件」(HTTP://img132.imageshack .us/img132/343/csharp.png) –