renommez-point et le remplacer si le nom de fichier existe
Je suis en train d'utiliser le Rename-Item
applet de commande pour effectuer les opérations suivantes:
J'ai un dossier qui contient des "*.txt de fichiers". Disons 1.txt, 2.txt etc...
Je veux copier des fichiers qui ont un préfixe, de les renommer en *.txt et remplacer tous les fichiers existants s'il y a des.
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.txt
Que je veux utiliser pour renommer l'élément de filtre tout index.*.txt
et les renommer pour *.txt
, et si le même fichier existe, il faut le remplacer.
Merci les gars
Avez-vous essayé la force de l'interrupteur ?
La Force de l'habitude de travailler de cette façon avec
Vous pouvez utiliser [Système.IO.Fichier]::Copy($source,$targetfile,$true); - L' $true écrase le fichier existant...
Êtes-vous juste de poser des questions sur le processus de changement de nom ou de la logique pour déterminer le nouveau nom?
J'ai essayé de la Force. J'ai juste besoin de savoir si il ya une option pour renommer le fichier de A à B, et si B existe, de la remplacer par le nouveau nom de A à B.
La Force de l'habitude de travailler de cette façon avec
Rename-Item
que vous obtenez toujours Cannot create a file when that file already exists.
Vous pouvez utiliser [Système.IO.Fichier]::Copy($source,$targetfile,$true); - L' $true écrase le fichier existant...
Êtes-vous juste de poser des questions sur le processus de changement de nom ou de la logique pour déterminer le nouveau nom?
J'ai essayé de la Force. J'ai juste besoin de savoir si il ya une option pour renommer le fichier de A à B, et si B existe, de la remplacer par le nouveau nom de A à B.
OriginalL'auteur Ilya Gurenko | 2015-08-31
Vous devez vous connecter pour publier un commentaire.
Comme le fait remarquer @lytledw,
Move-Item -Force
fonctionne très bien pour le renommage de fichier et d'écraser les fichiers.Pour remplacer le
index.
une partie du nom, vous pouvez utiliser le-replace
opérateur regex:J'ai voulu renommer des milliers de fichiers en double qui résulte de la migration de ma bibliothèque de musique vers un nouvel ordinateur à partir de plusieurs emplacements de sauvegarde, dont l'ajouter automatiquement un timbre à date pour les noms de fichiers. J'ai utilisé cette réponse avec quelques modifications, à savoir: ` C:\Users\reyje\music\itunes\itunes media\music> Get-ChildItem "(2017_12_14.*" -recurse |ForEach-Object { >> $NewName = $_.Nom -remplacer " (2017_12_14 17_50_59 UTC)"," >> $Destination = Join-Path-Chemin $_.Répertoire.FullName -ChildPath $NewName >> Move-Item -Chemin $_.FullName de Destination $Destination de Force >> }`
L'idée était de remplacer la chaîne littérale " (2017_12_14 17_50_59 UTC)" avec rien-- " sont deux guillemets simples avec rien entre eux. Il a travaillé pour la grande majorité des fichiers, mais pour chaque fichier avec des crochets en son nom ou chemin d'accès, j'ai eu des erreurs comme ceci: Déplacez-Point : Impossible de récupérer les paramètres de la dynamique de la cmdlet. La spécifié de caractères génériques modèle n'est pas valide: 09 09 Vieux Violet Étain [9% de Pure Hea (2017_12_14 17_50_59 UTC).m4a En ligne:4 caractères:7 + Move-Item -Chemin $_.FullName De Destination $Destination -Force +
Il semble contre-intuitif pour moi que les personnages à l'intérieur d'un nom de fichier qui n'est pas typé ne seraient pas traités comme littéral de chaîne de caractères.
OriginalL'auteur Mathias R. Jessen
J'ai essayé de le renommer-élément de force et il ne fonctionne pas. Cependant, j'ai été capable de faire déplacer l'élément de la force et il a bien fonctionné
OriginalL'auteur lytledw