0

私はそのようなファイルのリストを持っています

abc.txt
pas.txt
tempr.txt

私がやりたいことは、英語のアルファベットをこれらのファイル名に追加することです..結果は次のようになります

abc_a.txt
pas_b.txt
tempr_c.txt

このプロセスは、最後の文字 (つまり「z」) まで継続する必要があります。さらにファイルがある場合、ファイル名は次のようになります

abc_a.txt
pas_b.txt
tempr_c.txt
.................
filename_z.txt
anotherfilename_a001.txt

整数が付加されている場合を除いて、カウンターが最初の文字に再びリセットされたことに注意してください。

これは私が今持っているコードです。動作していないことに注意してください..

string alphabets= "abcdefghijklmnopqrstuvwxyz";
List<string> filenames = new List<string>();
filenames.Add("test1.txt");
filenames.Add("newfile.cs");
filenames.Add("test2.txt");
filenames.Add("newfile2.cs");


string currentFileNmae = string.Empty;

foreach(string s in filenames) {
    char usedAlphabet = new char();
    for(int i = 0;i<=alphabets.Length-1;i+=11) {
        usedAlphabet.Dump();
        alphabets[i].Dump();
        if(usedAlphabet != alphabets[i] )
        {
            if(currentFileNmae!= s)  
            {
                string.Format("{0}--{1}",s,alphabets[i]).Dump();
                usedAlphabet = alphabets[i];
                currentFileNmae = s;
            }

        }


        break;

    }

}

私は、内部目的でファイルの名前変更ツールを構築しているチームの一員であるため、このコードが必要です。これは、私たちが計画している列挙機能の一部です。

提案してください。ありがとう

4

3 に答える 3

1

ここから始めてみてください:

using System.Diagnostics;
using System.IO;

string filename = @"C:\Foo\Bar.txt";

for (int count = 0; count < 100; count++)
{
    char letter = (char)((int)'a' + count % 26);
    string numeric = (count / 26) == 0 ? "" : (count / 26).ToString("000");
    Debug.Print(Path.GetFileNameWithoutExtension(filename) + "_" + letter + numeric + Path.GetExtension(filename));
}

独自のループに置き換えてファイル名を調べPath、名前の断片/部分を操作するために使用します。

名前の変更、IIRC は で処理できますFile.Move。名前衝突ロジックを実装するには、 try/で囲みます。catch

于 2013-08-18T03:20:40.280 に答える