Я хотел бы рекурсивно переименовывать файлы и папки, применяя операцию замены строки.
Например, слово «акула» в файлах и папках должно быть заменено словом «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"));
Не делает трюк.
Я надеялся, что есть какой-то «гениальный» способ выполнить такую операцию.
Так что вы бы использовали рекурсию. Вот пример 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"
string oldPath = "\\shark.exe"
string newPath = oldPath.Replace("shark", "orca");
System.IO.File.Move(oldPath, newPath);
Заполните ваши собственные полные пути