我正在尝试修改此代码以复制和重命名(而不是仅移动)多个目录。我有一个包含2列的CSV文件。 “原始文件夹名称”和“新文件夹名称”。
using System.Linq;
using System.IO;
string csv = "csv path";
string sourcedir = @"C:\temp1\";
string targetdir = @"C:\temp2\";
string[] items = File.ReadAllLines(csv);
foreach(var item in items)
{
string oldname = item.Split(';')[0];
string newname = item.Split(';')[1];
Directory.Move(sourcedir +oldname, targetdir +newname);
}
答案 0 :(得分:0)
当 source 文件夹不包含嵌套文件夹时,请使用this way:
string csv = "csv path";
string sourcedir = @"C:\temp1\";
string targetdir = @"C:\temp2\";
var items = File.ReadAllLines(csv);
foreach(var item in items)
{
var paths = item.Split(";");
var sourcePath = Path.Combine(sourcedir, paths[0]);
var targetPath = Path.Combine(targetdir, paths[1]);
System.IO.Directory.CreateDirectory(targetPath);
var files = System.IO.Directory.GetFiles(sourcePath);
foreach (string s in files)
{
var fileName = System.IO.Path.GetFileName(s);
var destFile = System.IO.Path.Combine(targetPath, fileName);
System.IO.File.Copy(s, destFile, true);
}
}
否则,您需要对嵌套文件夹使用递归遍历-参见示例MS docs 'How to: Copy directories'。