web-dev-qa-db-fra.com

renommer l'élément et remplacer si le nom de fichier existe

J'essaie d'utiliser le Rename-Item applet de commande pour effectuer les opérations suivantes:

J'ai un dossier qui contient des fichiers "*. Txt". Disons 1.txt, 2.txt etc ...

Je veux copier des fichiers qui ont un préfixe, les renommer en * .txt et remplacer tous les fichiers existants s'il y en a.

exemple:

dossier: c:\TEST

fichiers: 1.txt, 2.txt, 3.txt, 4.txt, 5.txt, index.1.txt, index.2.txt, index.3.txt, index.4.txt, index.5. SMS

Je veux utiliser rename-item pour filtrer n'importe quel index.*.txt et les renommer *.txt, et si le même fichier existe, remplacez-le.

Merci les gars

22
Ilya Gurenko

Comme indiqué par @lytledw, Move-Item -Force fonctionne très bien pour renommer et remplacer des fichiers.

Pour remplacer le index. partie du nom, vous pouvez utiliser le -replace opérateur regex:

Get-ChildItem index.*.txt |ForEach-Object {
    $NewName = $_.Name -replace "^(index\.)(.*)",'$2'
    $Destination = Join-Path -Path $_.Directory.FullName -ChildPath $NewName
    Move-Item -Path $_.FullName -Destination $Destination -Force
}
31
Mathias R. Jessen

J'ai essayé le rename-item -force et cela n'a pas fonctionné. Cependant, j'ai pu faire déplacer-item -force et cela a bien fonctionné

6
lytledw