1

/images/graphicsLib/ にあるディレクトリ内のいくつかの画像の名前を変更するのに助けが必要です。

/graphicsLib/ 内のすべての画像名には、400-60947.jpg のような命名規則があります。ファイルの「400」の部分をプレフィックスと呼び、「60957」の部分をサフィックスと呼びます。SKU と呼ばれるファイル名全体。

したがって、/graphicLib/ の内容を見ると、 次
の よう に
なり ます
。 500-60733.jpg など...





C#と System.IOを使用して、ファイル名のプレフィックスに基づいてすべての画像ファイルの名前を変更する許容される方法は何ですか? ユーザーは現在の接頭辞を入力し、一致する /graphicsLib/ 内のすべての画像を表示してから、新しい接頭辞を入力して、それらすべてのファイルの名前を新しい接頭辞で変更できる必要があります。ファイルのプレフィックスのみが名前変更され、残りのファイル名は変更する必要があります。

私がこれまでに持っているものは次のとおりです。

//enter in current prefix to see what images will be affected by
// the rename process,
// bind results to a bulleted list.
// Also there is a textbox called oldSkuTextBox and button
// called searchButton in .aspx


private void searchButton_Click(object sender, EventArgs e)

{

string skuPrefix = oldSkuTextBox.Text;


string pathToFiles = "e:\\sites\\oursite\\siteroot\\images\graphicsLib\\";  

string searchPattern = skuPrefix + "*";

skuBulletedList.DataSource = Directory.GetFiles(pathToFiles, searchPattern);

skuBulletedList.DataBind();

}



//enter in new prefix for the file rename
//there is a textbox called newSkuTextBox and
//button called newSkuButton in .aspx

private void newSkuButton_Click(object sender, EventArgs e)

{

//Should I loop through the Items in my List,
// or loop through the files found in the /graphicsLib/ directory?

//assuming a loop through the list:

foreach(ListItem imageFile in skuBulletedList.Items)

{

string newPrefix  = newSkuTextBox.Text;

//need to do a string split here?
//Then concatenate the new prefix with the split
//of the string that will remain changed?

 }

}
4

2 に答える 2

2

string.Splitを見ることができます。

ディレクトリ内のすべてのファイルをループします。

string[] fileParts = oldFileName.Split('-');

これにより、2 つの文字列の配列が得られます。

fileParts[0] -> "400"
fileParts[1] -> "60957.jpg"

リストの最初の名前を使用します。

新しいファイル名は次のようになります。

if (fileParts[0].Equals(oldPrefix))
{
    newFileName = string.Format("(0)-(1)", newPrefix, fileParts[1]);
}

次に、ファイルの名前を変更します。

File.Move(oldFileName, newFileName);

ディレクトリ内のファイルをループするには:

foreach (string oldFileName in Directory.GetFiles(pathToFiles, searchPattern))
{
    // Rename logic
}
于 2009-10-21T22:22:43.530 に答える
2

実際には、ディレクトリ内の各ファイルを繰り返し、1つずつ名前を変更する必要があります

新しいファイル名を決定するには、次のようなものを使用できます。

String newFileName = Regex.Replace("400-60957.jpg", @"^(\d)+\-(\d)+", x=> "NewPrefix" + "-" + x.Groups[2].Value);

ファイルの名前を変更するには、次のようなものを使用できます。

File.Move(oldFileName, newFileName);

正規表現に慣れていない場合は、 http ://www.radsoftware.com.au/articles/regexlearnsyntax.aspx を確認してください。

そして、このソフトウェアを pracice にダウンロードします: http://www.radsoftware.com.au/regexdesigner/

于 2009-10-21T22:14:53.293 に答える