Renommer plusieurs fichiers dans un dossier, ajouter un préfixe (Windows)
Je voudrais renommer par lots les fichiers dans un dossier, en préfixant le nom du dossier dans les nouveaux noms. c'est à dire des fichiers dans C:\house chores\
seront tous renommé house chores - $old_name
.
- Est votre commentaire utile à tous. La question est valide et que votre commentaire est condescendant et n'est pas nécessaire - vous n'avez pas à fournir. J'ai maintenant eu le même problème et après 5 autres pages qui avaient le même mauvais conseils j'ai trouvé celui-ci et a résolu mon problème en utilisant la plus petite réponse ici - qui l'OMI devrait être la réponse sommet - le haut est trop bavard et a causé des dégâts incalculables avec erronée des instructions. (la réponse que j'ai utilisé est actuellement classé 7 et dit d'utiliser cette commande Get-ChildItem | renommer-item-NewName { "tâches ménagères-" + $_.Nom }
Vous devez vous connecter pour publier un commentaire.
Option 1: À L'Aide De Windows PowerShell
Ouvrir le menu windows.
Type: "PowerShell" et ouvrez le Windows PowerShell' fenêtre de commande.
Goto dossier avec les fichiers de votre choix: par exemple cd "C:\house les corvées"
Avis: l'adresse doit intégrer les guillemets "" si il y a des espaces concernés.
Vous pouvez utiliser 'dir' de voir tous les fichiers dans le dossier. L'utilisation de '|' sera pipeline de la sortie de 'dir' de la commande qui suit.
Notes: "dir" est un alias de "Get-ChildItem'. Voir: wiki: les applets de commande.
On peut donner plus de fonctionnalités. par exemple, 'dir -recurse de la production de tous les fichiers, dossiers et sous-dossiers.
Ce que si je veux seulement une gamme de fichiers?
Au lieu de " dir |' je peux utiliser:
Par lot renommer avec le nom de répertoire comme préfixe:
Option 2: À L'Aide De L'Invite De Commande
Dans le dossier, appuyez sur maj+clic droit, sélectionnez "ouvrir de commande de la fenêtre ici"
Si il y a beaucoup de fichiers, il peut être bon d'ajouter d'un "@echo off " de commande avant et un 'echo sur" commande " à la fin.
@
dans@echo on
n'est pas nécessaire. Vous n'avez eu@echo off
.Get-ChildItem
ne fournit pas de fonctionnalités supplémentaires surdir
.dir
est tout simplement un alias de sorte que vous pouvez fairedir -recurse
si vous le souhaitez (ls
est un alias pourGet-ChildItem
donc vous pouvez l'utiliser si vous le souhaitez). Aussi, il serait utile de mentionner la-WhatIf
et-Confirm
options surRename-Item
dans le cas de l'OP ne les connaît pas. (Peut également être intéressant de noter queRename-Item
peut être raccourcie àren
ourni
et la-NewName
peut être omis que le nouveau nom est l'argument par défaut.)do
) ne fonctionne pas — après certains fichiers ont été renommés,for
trouve sous le nouveau nom, en ajoutant le préfixe encore et encore jusqu'à ce que la limite de longueur de nom de fichier est atteinte.ren was unexpected at this time.
aucune idée pourquoi?do
est manquant dans sa réponse. il devrait êtrefor %a in (.) do ren "%a" "prefix - %a"
Le problème avec les deux Powershell réponses ici, c'est que le préfixe peut être dupliqué depuis le script va s'exécuter potentiellement sur le fichier à la fois avant et après qu'il a été renommé, selon le répertoire de recours que le processus de changement de nom s'exécute. Pour contourner ce problème, utilisez simplement le
-Exclude
option:Cela permettra d'éviter le processus de renommer un fichier plusieurs fois.
Logiciel libre " Bulk Rename Utility ' fonctionne aussi très bien (et qui est puissant pour les tâches avancées aussi). Télécharger et l'installation dure une minute.
Voir captures d'écran et tutoriel sur le site d'origine.
--
Je ne peut pas fournir de l'étape-par-étape de captures d'écran les images devront être libérés en vertu de Licence Creative Commons, et je ne possède pas les captures d'écran du logiciel.
Avertissement: je ne suis pas associé avec le logiciel/de l'entreprise en quelque sorte. J'ai aimé le produit de ma propre tâche, il sert des OP et des exigences similaires, ainsi recommander.
Cela a fonctionné pour moi, le premier cd dans le répertoire que vous souhaitez modifier les noms de fichier, puis exécutez la commande suivante:
Basé sur @ofer.sheffer répondre à cette commande permet de renommer en masse et ajouter la date du jour pour le nom de fichier. c'est à dire "file.txt" devient "20180329 - file.txt" pour tous les fichiers dans le dossier actuel
Je déchirait mes cheveux parce que pour certains éléments, l'élément renommé serait renommés de nouveau (à plusieurs reprises, à moins que max longueur du nom de fichier a été atteinte). Ce qui se passait à la fois pour Get-ChildItem et de la tuyauterie de sortie de la dir. Je suppose que les fichiers renommés suis ramassé en raison d'un changement dans l'ordre alphabétique. J'ai résolu ce problème de la manière suivante:
Cela "bloque" les résultats retournés par Get-ChildItem dans la variable $dirs et vous pouvez parcourir sans crainte que la commande va changer ou d'autres drôles d'affaires va se passer.
Dave.Gugg l'astuce de l'aide -Exclure devrait également résoudre ce problème, mais c'est une approche différente; peut-être que si les fichiers à renommer contiennent déjà le motif est utilisé dans le préfixe.
(Disclaimer: je suis très PowerShell n00b.)
Je sais que c'est une vieille question, mais j'ai appris beaucoup de différentes réponses, mais avec ma propre solution en fonction. Cela devrait ajouter dynamiquement le dossier parent comme préfixe pour tous les fichiers qui correspondent à un certain modèle, mais seulement si elle n'a pas que le préfixe déjà.
https://gist.github.com/kmpm/4f94e46e569ae0a4e688581231fa9e00
Basé sur @ofer.sheffer réponse, c'est la CMD variante pour l'ajout d'un affixe (ce n'est pas la question, mais cette page est toujours le n ° 1 de résultats sur google si vous recherchez apposer). C'est un peu différente en raison de l'extension.
Vous pouvez changer le "-affixe" de la partie.