1

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

你好!我想重命名(批量)一些文件... 1. 我有(大约 50 000 个文件):abc.mp3、def.mp3、ghi.mp3 我想要:abc1.mp3、def1.mp3、ghi1.mp3

2. 我有(大约 50 000 个文件):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]; 而且我无法正确转换它。谢谢你!

4

3 回答 3

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();
于 2012-09-18T04:43:46.053 回答
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));
于 2012-09-18T04:52:24.563 回答
0

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

newFileName[i] = mp3Files[i];

并且由于您使用的是 for 循环,因此最好使用字符串而不是字符串数组。

于 2012-09-18T04:47:48.047 回答