2008-08-19 8 views
0

Je voudrais renommer les fichiers et les dossiers récursivement en appliquant une opération de remplacement de chaîne.Quelle est la meilleure façon de renommer (déplacer) les branches du système de fichiers dans .NET?

E.g. Le mot "requin" dans les fichiers et dossiers devrait être remplacé par le mot "orca".

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

devrait être déplacé vers:

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

La même opération devrait être bien sûr appliqué à chaque objet enfant dans chaque niveau du dossier ainsi.

J'expérimentais avec certains des membres des classes System.IO.FileInfo et System.IO.DirectoryInfo, mais je n'ai pas trouvé un moyen facile de le faire.

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

Ne fait pas l'affaire. J'espérais qu'il existe une sorte de "génie" pour effectuer ce genre d'opération.

Répondre

1

Vous utiliseriez donc la récursivité. Voici un exemple qui devrait être powershell facile à convertir en 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" 
0
string oldPath = "\\shark.exe" 
string newPath = oldPath.Replace("shark", "orca"); 

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

Remplissez avec vos propres chemins complets

Questions connexes