Ajouter du texte à la fin du nom de fichier (mais avant l'extension) à l'aide d'un fichier de commandes


18

J'ai une liste de fichiers au format à gauche. Je veux ajouter une chaîne à chaque nom de fichier, mais avant l'extension, comme indiqué:

File 1.txt  ->  File 1 version 1.txt
File 2.txt  ->  File 2 version 1.txt
File 3.txt  ->  File 3 version 1.txt
File 4.txt  ->  File 4 version 1.txt
...

Dans chaque cas, la chaîne ajoutée est la même dans tous les fichiers.

Cela semble être une tâche si simple, mais j'ai du mal à mettre cela dans un fichier batch.

J'ai essayé la rencommande et suivi certains des exemples de cette page , mais les noms de fichiers résultants ajoutent la chaîne après l'extension:

File 1.txt version 1.txt

Les informations sur votre lien SS64 "cette page" proviennent de ce SU Q&A (avec ma bénédiction): Comment la commande Windows RENAME interprète-t-elle les caractères génériques? Je maintiens la réponse SU (rarement) à mesure que je découvre de nouvelles fonctionnalités.
dbenham

Réponses:


6

pour les noms de fichiers plus longs, vous devrez ajouter un peu plus ?dans le bloc avec la masse de?????????

ren *.?* ????????????????????????????????????????????????????????" version 1".*

2
Merci d'avoir répondu si rapidement! J'ai légèrement modifié la commande, pour conserver l'extension de fichier et pour n'affecter que les fichiers txt: ren * .txt ?????????????????????????? "Version 1.txt "
TheTurkey

et si je veux ajouter quelque chose au début
Farhana Haque

combien ? sont-ils nécessaires?
Kaveesh Kanwal

39

Au lieu de compter sur les caprices non documentés de ren , pourquoi ne pas le faire correctement?

for %a in (*.txt) do ren "%~a" "%~na version 1%~xa"

Si vous souhaitez l'utiliser dans un fichier batch, n'oubliez pas de doubler chaque signe%.


1
Excellent! c'est une meilleure réponse tous les jours. +1
Fr0zenFyr

Avez-vous plus de documentation sur "% ~ a" et d'autres afin que nous puissions créer notre propre version?
Jomme il y a

2

Je voulais ajouter "_A" à plusieurs fichiers et c'est ainsi que je l'ai fait.

J'ai d'abord supprimé l'extension, ajouté le suffixe, puis remplacé l'extension par l'original. Cela a bien fonctionné pour moi et a gardé le code de lot simple, car je ne suis pas beaucoup un programmeur.

@ECHO OFF

REN *.pdf *.
REN *. *_A.
REN *. *.pdf

2

Pour les gens qui ne connaissent pas la commande (comme moi), il existe quelques logiciels qui rendent le renommage en vrac très facile:

  • Utilitaire de renommage en masse (pas d'open source)
  • Renommez-le! (Open source)

1

La solution de @ bwDraco était bonne mais elle aurait pu être plus simple. Mes fichiers étaient tous * .jpg et je voulais tous les renommer * c.jpg. Vous n'avez besoin que de 2 étapes pour cela, pas de 3:

ren "{filepath}\*.jpg" *.
ren "{filepath}\*" *c.jpg

0

Récursivement via des sous-dossiers

#!/bin/bash
# Warning: globstar excludes hidden directories.
# Turn on recursive globbing (in this script) or exit if the option is not supported:
shopt -s globstar || exit
for f in **
do
if [ -f "$f" ]; then
   extn=${f##*.} # save the extension of the file
   #mv "$f" "${f%.*}"_suffix.${extn};
   mv "$f" "${f%.*} version 1".${extn};
fi
done
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.