用C#重命名文件组(Windows窗体应用程序)

时间:2012-09-18 04:29:07

标签: c# winforms

环境:Visual Studio 2010,Windows窗体应用程序。

嗨!我想重命名(批处理)一些文件...... 1。 我有(大约5万个文件):abc.mp3,def.mp3,ghi.mp3 我想:abc1.mp3,def1.mp3,ghi1.mp3

2。 我有(大约5万个文件):abc.mp3,def.mp3,ghi.mp3 我想:1abc.mp3,1def.mp3,1ghi.mp3

类似的东西......

    FolderBrowserDialog folderDlg = new FolderBrowserDialog();
    folderDlg.ShowDialog();

    string[] mp3Files = Directory.GetFiles(folderDlg.SelectedPath, "*.mp3");
    string[] newFileName = new string[mp3Files.Length];

    for (int i = 0; i < mp3Files.Length; i++)
    {
        string filePath = System.IO.Path.GetDirectoryName(mp3Files[i]);
        string fileExt = System.IO.Path.GetExtension(mp3Files[i]);

        newFileName = mp3Files[i];

        File.Move(mp3Files[i], filePath + "\\" + newFileName[1] + 1 + fileExt);
    }

但是这段代码不起作用。这里有错误... newFileName = mp3Files[i]; 我无法正确转换它。 谢谢!

3 个答案:

答案 0 :(得分:4)

最快的选择是使用直接操作系统重命名功能。使用进程对象使用/ C开关运行shell CMD。使用“ren”命令行重命名。

Process cmd = new Process()
{
    StartInfo = new ProcessStartInfo()
    {
        FileName = "cmd.exe",
        Arguments = @"/C  REN c:\full\path\*.mp3 c:\full\path\1*.mp3"
    }
};

cmd.Start();
cmd.WaitForExit();

//Second example below is for renaming with file.mp3 to file1.mp3 format
cmd.StartInfo.Arguments = @"/C  REN c:\full\path\*.mp3 c:\full\path\*1.mp3";
cmd.Start();
cmd.WaitForExit();

答案 1 :(得分:2)

请尝试使用此代码:

Directory.GetFiles(folderDlg.SelectedPath, "*.mp3")
    .Select(fn => new
    {
        OldFileName = fn,
        NewFileName = String.Format("{0}1.mp3", fn.Substring(fn.Length - 4))
    })
    .ToList()
    .ForEach(x => File.Move(x.OldFileName, x.NewFileName));

答案 2 :(得分:0)

正如朋友在评论中讨论的那样,你可以将newFileName声明为一个简单的字符串(而不是字符串数组),或者如果你打算使用数组,可以使用下面的代码:

newFileName[i] = mp3Files[i];

由于你使用for循环,你最好使用字符串而不是字符串数组。