Je suis en train de renommer plusieurs fichiers de _2. à . Je veux supprimer le suffixe "_2"
Ma première solution consiste à essayer
ren *_2.* *.*
mais ça ne marche pas. L'aide est appréciée.
batch-file
batch-rename
Abdelhafid Madoui
la source
la source
Réponses:
Solution
Vous pouvez utiliser ce script batch:
Comment ça marche
*_2.*
._2
suffixe de chaque nom de fichier (%%~nG
) en enlevant les 2 derniers caractères.%%~xG
) au nouveau nom.Cas de test
Lectures complémentaires
la source
Vous pouvez essayer ceci comme un petit .cmd:
lequel semble faire ce que vous attendez (supprimer l'écho s'il est satisfait par le test).
Je viens de voir un problème possible si vous avez plusieurs
_2.
dans le nom du fichierMODIFIER : proposition incomplète remplacée selon la suggestion
la source
2014_02_23_2.log
. Si vous supprimez tout_2
en le remplaçant par une chaîne vide, vous vous retrouveriez avec un fichier nommé2014_023.log
. Pas vraiment ce que le PO voulait.Voici comment vous pouvez le faire dans PowerShell (c'est un one-liner alors assurez-vous de faire défiler vers la droite):
gci est un alias de Get-ChildItem - entrez le chemin de votre dossier ici. Si vous avez des sous-dossiers, ajoutez -Recours après le chemin
? est un alias de Where-Object - ici nous parcourons les éléments et vérifions qu'il ne s'agit PAS d'un dossier et que son nom se termine par "_2" (sans l'extension du fichier).
ren - Rename-Item - Enfin, nous renommons les fichiers qui ont passé le filtre Where-Object. En utilisant Substring, nous venons de couper les deux derniers caractères du nom de fichier.
la source
Cela devrait le faire, en supposant que les modèles est vraiment
_2.*
et pas_2*.*
(rien après le chiffre 2) et il n'y a qu'un seul trait de soulignement dans le nom et31415 correctement souligné - car il supprimera tout_
(soulignement) jusqu'à l'extensionfor %i in (*_2.*) do (@for /f "delims=_ tokens=1" %j in ("%~ni") do @echo ren "%i" "%j%~xi")
Notez s'il vous plaît:
- c'est une ligne, comme exécuté directement depuis la ligne de commande
- maintenant seulement des échos ren commande à la console. Après avoir vérifié qu'il fonctionnerait correctement, supprimez
@echo
pour qu’il renomme réellement les fichiers.la source
abc_def_2.txt
. Ensuite, votre code le renommerait enabc.txt
, ce qui n’est pas le résultat attendu.Voici le one-liner pour le faire avec JP Software Prendre La Commande , un interprète de commande dont
REN
commande supporte les expressions régulières:Lectures complémentaires
la source
Je ne connais pas une façon très rapide et sale de le faire.
Mais que diriez-vous de canaliser une liste de répertoires nus dans un fichier TXT. Chargez le fichier dans une feuille de calcul et créez une ou plusieurs formules pour créer les commandes de changement de nom. Ensuite, vous pouvez copier les commandes de changement de nom en tant que valeurs et les coller dans un fichier de commandes pouvant être exécuté pour effectuer les renommés.
la source