Сведения о вопросе

rjevskii

01:34, 9th August, 2020

Теги

Каков наилучший способ переименования (перемещения) ветвей файловой системы в .NET?

Просмотров: 452   Ответов: 2

Я хотел бы рекурсивно переименовывать файлы и папки, применяя операцию замены строки.

E.g. Слово "shark" в файлах и папках должно быть заменено словом "orca".

C:\Program Files\Shark Tools\Wire Shark\Sharky 10\Shark.exe

следует переместить в:

C:\Program Files\Orca Tools\Wire Orca\Orcay 10\Orca.exe

Та же операция, конечно, должна быть применена и к каждому дочернему объекту на каждом уровне папок.

Я экспериментировал с некоторыми членами классов System.IO.FileInfo и System.IO.DirectoryInfo , но не нашел простого способа сделать это.

fi.MoveTo(fi.FullName.Replace("shark", "orca"));

Это не делает трюк.

Я надеялся, что есть какой-то "genius" способ выполнить такую операцию.



  Сведения об ответе

PHPH

06:57, 7th August, 2020

Так что вы бы использовали рекурсию. Вот пример powershell, который должен быть легко преобразован в C#:

function Move-Stuff($folder)
{
    foreach($sub in [System.IO.Directory]::GetDirectories($folder))
      {
        Move-Stuff $sub
    }
    $new = $folder.Replace("Shark", "Orca")
    if(!(Test-Path($new)))
    {
        new-item -path $new -type directory
    }
    foreach($file in [System.IO.Directory]::GetFiles($folder))
    {
        $new = $file.Replace("Shark", "Orca")
        move-item $file $new
    }
}

Move-Stuff "C:\Temp\Test"


  Сведения об ответе

DO__IT

11:23, 2nd August, 2020

string oldPath = "\\shark.exe"
string newPath = oldPath.Replace("shark", "orca");

System.IO.File.Move(oldPath, newPath);

Заполните свои собственные полные пути


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться