环境: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];
我无法正确转换它。
谢谢!
答案 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循环,你最好使用字符串而不是字符串数组。