0

C:\Users\userPC\Desktop\MATT\PROVA\IMG\AW123,000 個の画像ファイルを含むディレクトリ ( ) の名前をC#. これらの画像には、実際には次のような名前があります。

area1_area2_area3_area4.jpg

に名前を変更した新しいファイルを作成するために、area2 と area4 を使用したいと思いますarea2_area4.jpg。これらのエリアには通常の文字数がありません。どのようにできるのか?このディスカッションを見つけましたサーバーディレクトリの画像ファイルの名前を変更する

しかし、私はプログラミングの初心者であり、問​​題を解決する方法を理解できません。

4

3 に答える 3

2

これが解決策です。混乱する前にチェックしないことに注意してください:)

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('_')

于 2012-11-23T14:36:37.633 に答える
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);
                }
            }
        }
    }
}
于 2012-11-23T14:51:58.893 に答える
0

最初に、フォルダーに含まれるファイル名のリストを取得します

var listOfFileNames = Directory.GetFiles(directory);

領域には通常の文字数がないとおっしゃいました(領域はアンダースコア文字で区切られていると思います)。そのため、アンダースコア文字をセパレータとして使用して、各ファイル名を 4 つの領域に分割します。

次に、新しいファイル名を作成します。たとえば、

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

お役に立てれば

于 2012-11-23T14:42:06.950 に答える