复制并重命名目录

时间:2019-06-11 02:42:04

标签: c# filesystems

我正在尝试修改此代码以复制和重命名(而不是仅移动)多个目录。我有一个包含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);
}

1 个答案:

答案 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'